1、简述5xx出现原因

500:大多是代码问题,或者sql报错。
501:服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502:nginx在这里充当的是反向代理服务器的角色,是把http协议请求转成fastcgi协议的请求,通过fastcgi_pass指令传递给php-fpm进程,当php-fpm进程响应的内容是nginx无法理解的响应,就会返回502 bad gateway。
503:服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用)。一个http请求占用一个php-fpm进程,瞬时请求量过大时,没有足够的php-fpm进程去处理请求,就会返回503 service unavailable。
504: 单个php-fpm进程阻塞超过nginx的时间阈值返回504 gateway timeout。
505:服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)

2、500错误

1、500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。
2、500出错的可能性:

  1. a、编程语言语法错误,web脚本错误
  2. b、并发高时,因为系统资源限制,而不能打开过多的文件

3、一般解决思路:

  1. a、查看nginxphp的错误日志文件,从而看出端倪
  2. b、如果是too many open files,修改nginxworker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
  3. c、如果是脚本的问题,则需要修复脚本错误,优化代码

3、501

服务器不具备完成请求的功能。例如:服务器无法识别请求方法时可能会返回。

4、502 Bad Gateway

网关超时。
fpm进程挂掉或者后端程序过长时间未返回。

5、503 Service Unavailable

解释:服务临时不可用。
问题原因:
nginx配置了频率限制,client端又超过了配置的限制,比如单个ip并发设置过小。

6、504 Gateway Time-out

nginx的fastcgi模块有一个fastcgi_read_timeout配置,它表示从FastCGI server获取数据的超时时间,增加它的等待时间,可以达到优化。

7、505 HTTP Version Not Supported

状态码是说服务器并不支持在请求中所标明 HTTP 版本。该状态是新加入 HTTP 1.1的

8、502、504的区别

502、504问题出现的可能性,一般是web服务器故障、程序进程不够。
a、使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经fastCGI使用情况等都会导致502、504错误。
b、502 是指请求的php-fpm已经执行,但是由于某种原因而没有执行完毕,最终导致php-fpm进程终止。一般来说,与php-fpm.conf的设置有关,也与php的执行程序性能有关,网站的访问量大,而php-cgi的进程数偏少。针对这种情况的502错误,只需增加php-fpm的进程数。具体就是修改/usr/local/php/etc/php-fpm.conf文件,将其中的max_children值适当增加。这个数据要依据你的服务器的配置进行设置。一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多。然后php-fpm然后重启一下.
c、504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。与nginx.conf的配置也有关系。
通俗的来说,nginx作为一个代理服务器,将请求转发到其他服务器或者php-cgi来处理,当nginx收到了无法理解的响应时,就返回502。当nginx超过自己配置的超时时间还没有收到请求时,就返回504错误。