Nginx502状态码处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx502状态码处理相关的知识,希望对你有一定的参考价值。
参考技术A 登录后台服务器查看php-fpm进程和端口等由上命令结果看出php-fpm进程较少,先增加php-fpm,配置文件php-fpm.conf
pm = dynamic
pm.max_children = 600
pm.start_servers = 300
pm.min_spare_servers = 300
pm.max_spare_servers = 500
pm.max_requests = 6000
修改后重启php-fpm,完美收工。
(2) 查看nginx error日志
查看到connect() failed (111: Connection refused) while connecting to upstream
应该是php-fpm问题
(3) 查看php-error.log日志
看到php-fpm每分钟都在重启
NOTICE: Finishing ...
NOTICE: exiting, bye-bye!
(4) 去查看计划任务。有个脚本每分钟执行一次。
内容是:
(1) 判断php-fpm进程是否存在,如不存在,则重新启动php-fpm;
(2) 判断剩余内存,如果剩余内存<1600M,则重新启动php-fpm;
(5) 临时停止这个脚本后,php-fpm未重启过。
(6) free -m 查看内存还剩200M,所以计划任务脚本会重启php-fpm;但是重启php-fpm后buffer/cache未释放。所以每分钟会重启php-fpm;
Nginx之优雅处理上游服务器错误码
当上游服务器无法响应请求时,便会返回50x状态码,这里我们可以进行错误优化处理,会显示的更加友好。
示例如下:
# 方法1:从本地磁盘提供错误页面
server {
error_page 500 502 503 504 /50x.html;
location =/50x.html {
root html;
}
# 方法2:从外部网站提供错误页面
server {
error_page 500 http://www.test.com/50x.html;
}
若这里为代理到一组上游服务器的话,也可以定义一个备用服务器,以便于其他服务器不再处理请求时暂时处理请求(适用于流量小的站点)。
upstream servers {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082 down; # 下线
server 127.0.0.1:8083 backup; # 备份
}
server {
location / {
error_page 500 502 503 504 [email protected];
proxy_pass http://servers;
}
location @fallback {
proxy_pass http://127.0.0.1:8084;
}
}
upstream模块还能够为每一个上游服务器设置状态值,这些状态值的含义分别例如以下:
- down 表示该server临时不參与负载;
- weight 默认值为1,当weight越大,负载的权重就越大;
- max_fails 表示同时请求失败的次数为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
- fail_timeout 表示max_fails次失败后,暂停的时间;
- backup 表示当其他全部的非backup机器down或者忙的时候,才会去请求backup机器,所以这台机器压力会最轻。
扩展:Nginx也支持处理error_page 指定400或更大的错误代码的处理,如下示例:
server {
proxy_intercept_errors on; # 开启该指令
error_page 400 403 404 /40x.html;
location = /40x.html {
root html;
}
}
以上是关于Nginx502状态码处理的主要内容,如果未能解决你的问题,请参考以下文章
http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码