【问题标题】:Alternate max_post_size and upload_max_filesize for different subdomains and/or directories php.ini nginx fastcgi php-fpm不同子域和/或目录的备用 max_post_size 和 upload_max_filesize php.ini nginx fastcgi php-fpm
【发布时间】:2013-11-10 21:39:37
【问题描述】:

我的 nginx 和 php5-fpm 运行良好,www.mysite.comthis.mysite.comthat.mysite.com 都优雅地转到不同的目录。我一直在一个网站上上传文件。我希望最大文件大小为 10 GB。为此,我必须告诉 php.ini max_post_size 和 upload_max_filesize 是 10240 MB,而不是默认的 2 MB。

我很清楚安全隐患。因此,我希望 10240 MB 的 php.ini 值仅适用于以下一项或两项:

  • upload.mysite.com

和/或

  • www.mysite.com/upload

一种选择是还安装 Apache 以侦听不同的端口,执行一些重定向/重写魔术,并让 mod_php 的 php.ini 文件的 10240 MB 值仅处理上传站点。我宁愿不这样做。

如果没有单独的 Web 服务器处理对我的上传页面的请求,我如何在单个 nginx 实例中完成此操作?

【问题讨论】:

    标签: nginx php


    【解决方案1】:

    使用client_max_body_size 并将其设置为server 块中的所需值。如果请求正文超过此指令中指定的大小,Nginx 将直接放弃对请求的处理。请注意,在这种情况下,您将不会收到任何POST

    【讨论】:

      【解决方案2】:

      使用 php-fpm,您可以运行多个池,每个网站一个。

      然后您可以更改池配置中的任何 php.ini 设置(但请注意,您不能使用 MBG 快捷方式),在池中使用以下语法:

      ; UPLOAD
      php_admin_flag[file_uploads]         =1
      php_admin_value[upload_tmp_dir]="/some/path/var/tmp"
      ;Maximum allowed size for uploaded files. 10240MB *1024 *1024 -> 10737418240
      php_value[upload_max_filesize] ="10737418240"
      php_admin_value[max_input_time]      = (...)
      php_admin_value[post_max_size]  (...)
      

      这非常接近 Apache 虚拟主机的可用语法。 PHP 配置从未卡在php.ini 文件中。

      如您所见,您可以使用 php_valuephp_admin_value,最大的区别在于,当使用 php_value 时,稍后可以通过以下方式更改设置应用程序,使用 ini_set 命令。因此,您可以为 upload_max_filesize 使用较低的值,并仅在上传脚本的应用程序中对其进行更改。

      【讨论】:

        猜你喜欢
        • 2017-11-02
        • 2013-04-04
        • 1970-01-01
        • 2013-08-12
        • 2016-09-29
        • 2020-04-29
        • 2017-01-19
        • 2016-09-19
        • 2019-04-29
        相关资源
        最近更新 更多