Nginx 502 upstream sent too big header while reading response header from upstream

  线上部署的一个项目,通过OAuth登录完成之后,跳转回来就会出现502错误,错误必现。必现错误不用慌,从log里面仔细排查这个时间段的每一条记录,access log里面一般不会记录具体原因,只会记录502请求状态,想要查看具体原因还得看error log,如果log配置没搞好的话,建议先配置好log,然后再触发一次错误,这样就可以分析错误了。

nginx错误日志error_log日志级别

解决方法:在配置文件中加入这两个配置

location ~ .php$ {
    fastcgi_buffer_size 128k;
    fastcgi_buffers 32 32k;
}

重新加载Nginx,继续测试,正常没有报错!

nginx错误日志error_log日志级别

    在配置nginx.conf 的时候,有一项是指定错误日志的,默认情况下你不指定也没有关系,因为nginx很少有错误日志记录的。但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。

error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit, 该级别在日志名后边定义格式如下:

error_log  /your/path/error.log crit;  

crit 记录的日志最少,而debug记录的日志最多。

如果你的nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富。


Nginx 防止被域名恶意解析的方法

    服务器这两天流量突增,负载也上去了,影响线上的业务很卡。

    先看日志,access日志太大,先把日志切割,通过日志发现里面有很多别的陌生域名的访问日志,解决方法就是拒绝nginx的默认解析。

server {
    listen       80  default_server;
    server_name  _;
    access_log   off;    
    return       403;
}

原理就是给不正常的解析返回一个错误状态,并关闭log记录。

记一次WIFI_dog系统的路由器信息不更新问题

    客户反馈问题:路由器在上网,但是信息一直显示离线。

2016-05-17_113704.png

中间各种曲折的过程,这里就不献丑了,直接上最终方法。

首先查看nginx 的 access.log

B_1.png

Nginx 499 错误,抓到错误了,问题还想跑?

各种找nginx 499错误 的资料,原因可能是 nginx认为是不安全的连接,主动拒绝了客户端的连接。

解决方案,修改nginx.conf 加入下面的配置,重启nginx。

fastcgi_connect_timeout         300s; 
fastcgi_send_timeout            300s; 
fastcgi_read_timeout            300s; 
fastcgi_ignore_client_abort     on; 
proxy_ignore_client_abort       on;

B_2.png

再次查看日志状态就是 200了。

B_3.png

到这里,系统正常了。

总结:生产环境的经验还是要靠积累,要善于从log中寻找答案,会分析各种log,来寻找相应的对策,还有就是耐心,解决这个问题,累计耗时10个小时,当然可能我比较笨吧。

Nginx出现413 Request Entity Too Large错误解决方法

    今天迁移了一个网站到服务器上,LNMP环境,视频上传传不上去。从浏览器的Network报错看到

413 Request Entity Too Large

解决方法:

whereis nginx.conf    # 找到nginx主配置文件  yum安装的在 /etc/nginx  下
vim nginx.conf


找到http{}段,修改或者添加

client_max_body_size 200m;
nginx -s reload     # 重新加载nginx配置


总结: LNMP的环境,大文件上传有 php.ini nginx.conf  所控制。

php.ini 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项。

查资料看到 post_max_size 最大值最好不要超过2048,就是2G,我也没有超大文件上传,没有深究。

还有在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过30秒的错误,这是因为在php.ini配置文件中max_execution_time配置选项在作怪,其表示每个脚本最大允许执行时间(秒),0 表示没有限制。你可以适当调整max_execution_time的值,不推荐设定为0。