nginx-客户端\u最大\u正文\u大小没有影响
nginx一直在说nginx-客户端\u最大\u正文\u大小没有影响,nginx,Nginx,nginx一直在说客户端打算发送太大的body。谷歌和RTM向我指出了客户机\u max\u body\u size。我在nginx.conf和vhost conf中将其设置为200m,重新启动了nginx几次,但仍然收到错误消息 我忽略了什么吗?后端是php fpm(max\u post\u size和max\u upload\u file\u size相应设置)。请查看是否在http{}块内而不是在location{}块内设置client\u max\u body\u size指令。我在ht
客户端打算发送太大的body
。谷歌和RTM向我指出了客户机\u max\u body\u size
。我在nginx.conf
和vhost conf
中将其设置为200m
,重新启动了nginx几次,但仍然收到错误消息
我忽略了什么吗?后端是
php fpm
(max\u post\u size
和max\u upload\u file\u size
相应设置)。请查看是否在http{}块内而不是在location{}块内设置client\u max\u body\u size指令。我在http{}块中设置了它,它可以工作下面,您可以在以下上下文中设置client_max_body_size 20m(或您需要的任何值):
context: http, server, location
与忽略
client\u max\u body\u size
指令的问题相同
我愚蠢的错误是,我在
/etc/nginx/conf.d
中放了一个文件,它没有以.conf
结尾。默认情况下,Nginx不会加载这些文件。最终,Nginx大型上载在托管WordPress网站上成功运行(根据nembleton&rjha94的建议)
我想如果我对他们的建议稍加澄清,可能会对他们有所帮助。对于初学者,请确保在所有三个单独的定义块(服务器、位置和http)中都包含了增加的上传指令。每个都应该有一个单独的行条目。结果如下所示(其中…反映了定义块中的其他行):
(在我的ISPconfig 3设置中,此块位于/etc/nginx/nginx.conf文件中)
(在我的ISPconfig 3设置中,这些块位于/etc/nginx/conf.d/default.conf文件中)
另外,确保服务器的php.ini文件与这些NGINX设置一致。在我的例子中,我将php.ini的File_Uploads部分中的设置更改为:
upload_max_filesize = 200M
注意:如果您正在管理ISPconfig 3安装程序(根据,我的安装程序在CentOS 6.3上),则需要在几个单独的文件中管理这些条目。如果您的配置与分步设置中的配置类似,则需要修改的NGINX conf文件位于此处:
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
我的php.ini文件位于此处:
/etc/php.ini
我继续忽略nginx.conf文件中的http{}块。显然,忽视这一点会导致上传限制在1M默认限制。进行相关更改后,您还需要确保重新启动NGINX和PHP-FastCGI流程管理器(PHP-FPM)服务。在上述配置中,我使用以下命令:
/etc/init.d/nginx restart
/etc/init.d/php-fpm restart
有人纠正我,如果这是坏的,但我喜欢锁定一切尽可能多,如果你只有一个目标上传(通常的情况下),然后只针对你的更改,这一个文件。这对我来说在Ubuntu nginx extras主线1.7+软件包上很有用:
location = /upload.php {
client_max_body_size 102M;
fastcgi_param PHP_VALUE "upload_max_filesize=102M \n post_max_size=102M";
(...)
}
您需要应用以下更改:
php.ini
(从phpinfo();
中找到右ini文件),并将post_max_size
和upload_max_filesize
增加到所需的大小:
sed -i "s/post_max_size =.*/post_max_size = 200M/g" /etc/php5/fpm/php.ini
sed -i "s/upload_max_filesize =.*/upload_max_filesize = 200M/g" /etc/php5/fpm/php.ini```
位置
、http
或服务器
上下文中添加客户端最大身体大小
值
location / {
client_max_body_size 200m;
...
}
service nginx restart
service php5-fpm restart
ps-elf | grep php fpm
)并逐个杀死(kill-9 12345
),或者使用以下命令为您执行此操作:
ps -elf | grep php-fpm | grep -v grep | awk '{ print $4 }' | xargs kill -9
截至2016年3月,我在试图通过https发布json时遇到了这个问题(来自python请求,这并不重要) 诀窍是在至少两个地方放置“client\u max\u body\u size 200M;”
http{}
和server{}
:
1.http目录
- 通常在
/etc/nginx/nginx.conf中
服务器
目录
- 对于通过apt get安装的Debian/Ubuntu用户(以及其他默认使用vhosts安装nginx的发行版软件包管理器),这是
,对于那些没有vhosts的用户,可能是您的nginx.conf或与之位于同一目录中/etc/nginx/sites available/mysite.com
位置/
目录。
- 您可以比
更具体,但如果它根本不起作用,我建议将此应用于/
,然后一旦它起作用,就更加具体/
服务器
和位置
设置上述设置,无论在何处(理想情况下与2.相同)。我发现,如果您的客户机尝试在http上上载,并且您希望他们获得301'd到https,nginx实际上会在重定向之前断开连接,因为文件对于http服务器来说太大了,所以必须同时在这两种情况下
最近的评论表明,在较新的nginx版本的SSL上存在此问题,但我使用的是1.4.6,一切都很好:)如果您使用的是windows版本的nginx,您可以尝试杀死所有nginx进程并重新启动它以查看。
我在我的环境中遇到了同样的问题,但用这个解决方案解决了它。假设您已经在其他答案中设置了客户端的大小和各种PHP设置(上传文件大小/上传文件大小等),然后重新启动或重新加载NGINX和PHP而没有任何结果,请运行此 nginx-T 这将为您的NGINX配置中提供任何未解决的错误。在我的例子中,在我意识到还有其他一些未解决的SSL错误之前,我与413错误斗争了整整一天
service nginx restart
service php5-fpm restart
ps -elf | grep php-fpm | grep -v grep | awk '{ print $4 }' | xargs kill -9
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>