2

我有 nginx 和 php5-fpm 工作得很好,而且www.mysite.com, this.mysite.com, 并且that.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 实例中完成此操作?

4

2 回答 2

0

使用 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因此,您可以仅在上传脚本上使用较低的值并在应用程序中对其进行更改。

于 2013-11-06T17:18:07.547 回答
0

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

于 2013-10-31T14:08:27.670 回答