扬州城市论坛 百科 nginx报的http错误

nginx报的http错误

我基本都是用同一个配置文件在centos下配置lnmp组合,从来没有出现过任何问题。但是最近在一个vps上安装了同样的环境后,10多人在线时网站打开速度非常慢。有几次,nginx中设置的脚本最大超时时间直接达到了300秒。结果nginx向客户端浏览器发送了一个504网关超时错误代码,经过分析,更改了几个配置文件。

从错误码来看,基本可以确定与nginx本身无关,主要是提交给php-fpm的请求未能被正确反馈。一般在提交动态请求时,nginx会直接将请求转发给php-fpm,PHP-fpm再重新分配php-cgi进程处理相关请求,然后依次返回。最后,nginx会将结果反馈给客户端浏览器。但是,我的vps目前运行的是纯php应用内容。事实上,所有用户的请求都是php请求,其中一些请求需要很长时间,php-cgi进程总是被用完。但是php- fpm本身的配置文件只开放10组php-cgi进程,这样如果在线用户多一点,请求就不能正常处理,就会出错。

分析了原因之后,就比较容易做到以下几点了。首先,改变php-fpm的几个配置:

把max_children从之前的10个改成现在的30个,这样可以用足够多的php-cgi进程;

将request_terminate_timeout由之前的0s改为60s,这样php-cgi进程处理脚本的超时为60秒,可以防止所有进程被挂起,提高利用效率。

然后改变nginx的几个配置项,减少FastCGI的请求数量,尽量保持缓冲区不变:

Fastcgi_buffers从4 64k更改为2 256k;

fastgi _ buffer _ size由64k改为128K;

fastgi _ busy _ buffers _ size从128K更改为256K;

fastgi _ temp _ file _ write _ size从128K更改为256K。

好了,重新加载php-fpm和nginx的配置,再次测试。到现在两周没有504网关超时,就是这个结果。

另一个例子:

Ie管用。别人用FF。但是一个人使用FF浏览并报告错误502。

查看后台错误日志,找到一句话

从上游读取响应标头时,上游发送了太大的标头

只是反馈头信息太大了。

它通常被放在饼干里。

怀疑是FF中的一个插件导致返回过多的头信息。

一个接一个。最后发现是萤火虫引起的。

由于fastcgi返回的头太大,所以应该是可配置的。

搜了一下资料,发现应该和fastcgi_buffer_*有关

增加相关配置。解决发现的问题。

这里使用的是

fastcgi _ buffer _ size 32k

fastcgi _ buffers 8 32k

它比原来默认的4k/8k大得多

Http400错误:

NGX的HTTP400错误,而且这个HTTP400错误也不是每次都有。经过检查,发现nginx 400错误是由于请求头过大,通常是由cookie中写入的长字符串引起的。解决方法是不要在cookie中记录太多数据。如有必要,考虑调整nginx.conf中的client_header_buffer_size(默认1k)。

如果cookie太大,可能需要调整large_client_header_buffers(默认值为4k)。该参数描述如下:

如果请求行超出缓冲区,它将报告HTTP 414错误(URI太长)

Nginx接受最长的HTTP头大小必须大于缓冲区的大小,否则它将报告400 HTTP错误(错误请求)。

Http413错误:

Nginx上传时返回413错误。查看日志文件,显示的错误信息是“413请求实体太大”,于是上网搜索“nginx 413错误”,发现需要进行以下设置:

在nginx.conf中添加client_max_body_size的设置,默认为1m,可以增加到8m。

本文来自网络,不代表本站立场,转载请注明出处:https://baike.yzcslt.com/n/a2057.html

nginx报的http错误

扬州城市论坛后续将为您提供丰富、全面的关于nginx报的http错误内容,让您第一时间了解到关于nginx报的http错误的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。