nginx、fpm常见50*错误码

500

Internal Server Error服务内部错误:服务器遇到异常情况,无法提供服务。

场景:

  1. PHP语法错误。
  2. nginx内部异常,如打开文件过多。

排查:

通过nginx、php(包括fpm)错误日志排查,这类错误多为语法错误,故一般错误日志都会记录。

复现:

  1. 设置php.ini不显示fpm错误信息。
    检查php.ini内display_errors是否开启,若是开启状态,不会显示500错误,而会把错误信息输出到浏览器。

php文件:

nginx日志:

==> /opt/openresty/nginx/logs/test.com.error.log <==
2020/02/03 16:02:12 [error] 28927#0: *45 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function hello1() in /var/www/test.com/test.php:7
Stack trace:
#0 {main}
  thrown in /var/www/test.com/test.php on line 7" while reading response header from upstream, client: 127.0.0.1, server: test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "test.com"

页面:


501

Not Implemented 不被支持的请求:服务器不支持该种请求方式,服务器必须支持的方法只有GET和HEAD。

场景:配置及

服务器无法识别时出现

排查:

未复现

复现:

未复现

502

Bad Gateway 网关错误:表示作为网关或代理服务器,从上游服务器(fpm)接收到的响应是无效的。

场景:

fpm异常响应,如脚本执行时间过长,超过了fpm允许执行的时间,脚本尚未执行完成就被fpm杀掉。
或者fpm没有启动。都可能导致502。
总的来说是因为,请求到达fpm但是fpm没有给出正确的响应。

排查:

通过nginx或fpm日志。

复现:

  1. 设置fpm最大执行时间
    request_terminate_timeout: 5

php文件:

响应:


503

Service Unavailable 服务不可用:表示服务器尚未处于接受请求的状态。

场景:

服务器无法使用(由于超载或停机维护)。通常这只是暂时的状态。

排查:

未复现

复现:

未复现

504

Gateway Timeout 网关超时:表示作为网关或者代理服务器的服务器,无法在规定时间获取到响应。

场景:

nginx把请求转发给fpm后,未在nginx规定的时间内得到返回。

排查:
nginx日志:

2020/02/04 15:25:06 [error] 10584#0: *30 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 127.0.0.1, server: test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "test.com"

复现:
fpm配置:

# php脚本最大执行时间
request_terminate_timeout: 10;

nginx配置:

# fastcgi返回数据最大时长
fastcgi_read_timeout 5;

php代码:

页面:


499

场景:

客户端在没有得到请求返回的情况下,主动断开连接会报一个499的错误。

排查:
nginx 日志:

127.0.0.1 - - [04/Feb/2020:15:46:25 +0800] "GET /test.php HTTP/1.1" 499 0 "-" "curl/7.64.0" "-"

复现:
nginx配置:

# fastcgi返回数据最大时长
fastcgi_read_timeout 5;

使用curl:

# curl -m 5 -IX GET http://test.com/test.php
curl: (28) Operation timed out after 5001 milliseconds with 0 bytes received

你可能感兴趣的:(nginx、fpm常见50*错误码)