nginx-客户端\u最大\u正文\u大小没有影响

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

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指令。我在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```
    
  • 更新网站的NginX设置,并在您的
    位置
    http
    服务器
    上下文中添加
    客户端最大身体大小

    location / {
        client_max_body_size 200m;
        ...
    }
    
  • 重新启动NginX和PHP-FPM:

    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中
    2.vhost中的
    服务器
    目录

    • 对于通过apt get安装的Debian/Ubuntu用户(以及其他默认使用vhosts安装nginx的发行版软件包管理器),这是
      /etc/nginx/sites available/mysite.com
      ,对于那些没有vhosts的用户,可能是您的nginx.conf或与之位于同一目录中
    3。2位于同一位置的
    位置/
    目录。

    • 您可以比
      /
      更具体,但如果它根本不起作用,我建议将此应用于
      /
      ,然后一旦它起作用,就更加具体
    请记住-如果您有SSL,则需要您为SSL
    服务器
    位置
    设置上述设置,无论在何处(理想情况下与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>