服务器常见错误代码500、501、502、503、504、505

一:500错误

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

2、500出错的可能性:

a、编程语言语法错误,web脚本错误

b、并发高时,因为系统资源限制,而不能打开过多的文件

3、一般解决思路:

a、查看nginx、php的错误日志文件,从而看出端倪

b、如果是too many open files,修改nginx的worker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了

c、如果是脚本的问题,则需要修复脚本错误,优化代码

二:502、504错误

1、502 Bad Gateway错误、504 Bad Gateway timeout 网关超时

2、502、504出现的可能性

web服务器故障、程序进程不够

3、一般解决思路

a、使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经fastCGI使用情况等都会导致502、504错误。

 b、502 是指请求的php-fpm已经执行,但是由于某种原因而没有执行完毕,最终导致php-fpm进程终止。一般来说,与php-fpm.conf的设置有关,也与php的执行程序性能有关,网站的访问量大,而php-cgi的进程数偏少。针对这种情况的502错误,只需增加            php-cgi的进程数。具体就是修改/usr/local/php/etc/php-fpm.conf文件,将其中的max_children值适当增加。这个数据要依据你的服务器的配置进行设置。一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多。

     /usr/local/php/sbin/php-fpm reload 然后重启一下.

 c、504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。与nginx.conf的配置也有关系。

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

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

505  服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)

附:新增全部状态码含义

状态码分类
整体范围 已定义范围 分类
100~199 100~101 信息提示
200~299 200~206 成功
300~399 300~305 重定向
400~499 400~415 客户端错误
500~599 500~505 服务器错误
100(continue):说明收到了请求的初始部分,请客户端继续。
客户端发送一个携带值为100 Countinue的Expect请求首部,意味着客户端在发送实体前等待100 Continue响应。这是一种优化,客户端在避免向服务器发送一个大实体时,才使用。
101(Switching Protocols):说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议。
200(OK):请求没问题,实体的主体部分包含了所请求的资源。
201(Created):用于创建服务器对象的请求的响应(例如PUT)。实体主体部分包含各种引用了已创建的资源的URL。
202(Accepted):请求已被接受,但服务器还未对其执行任何动作,无法保证服务器会完成这个请求。
203(Non-Authoritative Information):实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本。
204(No Content):响应报文有状态行和首部,但没有实体的主体部分。
205(Reset Content):告知浏览器清除当前页面中的所有HTML表单元素。
206(Partial Content):成功执行了一个部分或Range(范围)请求。
重定向状态码要么告知客户端使用替代位置来访问他们所要访问的资源,要么提供一个替代的响应而不是资源的内容。
资源被移动的情况下,发送一个重定向状态码和一个可选的Location首部告知客户端资源已被移动,并且可以在哪里找到。
300(Multiple Choices):客户端请求一个实际指向多个资源的URL时会返回这个状态码。
301(Moved Permanently):请求的URL已经被移除,响应中Location首部包含资源现所处的URL。
302(Found):与301类似,但是客户端应该用Location首部的URL来临时定位资源,将来的请求仍用老的URL。
303(See Other):告知客户端应该用另一个URL来获取资源,新URL位于Location首部,允许POST请求的响应将客户端定向到某个资源上去。
304(Not Modified):客户端可以通过所包含的请求首部,使其变成有条件的。
305(Use Proxy):说明必须通过一个代理来访问资源,代理位置由Location首部给出。
306(未使用)
307(Temporary Redirect):和302一样。
400(Bad Request):用于告知客户端它发送了一个错误的请求。
401(Unauthorized):与适当的首部一起返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证。
402(Payment Required):保留状态码,未来之用。
403(Forbidden):说明请求被访问权拒绝。拒绝原因可能在实体的主体部分。
404(Not Found):服务器无法找到所请求的URL。
405(Method Not Allowed):发起请求中带有所请求的URL不支持的方法。响应中有Allow首部,告知客户端对所请求的资源可以用哪些方法。
406(Not Acceptable):客户端可以通过参数说明它们接受什么类型的实体,服务器没有和客户端可接受的URL相匹配的资源时用此代码。
407(Proxy Authentication Required):和401相似,但用于要求对资源进行认证的代理服务器。
408(Request Timeout):如果完成请求所花时间太长,服务器可以返回此状态码。
409(Confict):说明请求可能在资源上引发的一些冲突。
410(Gone):与404类似,只是服务器之前有过此资源。
411(Length Required):服务器要求在请求报文中包含Content-Length首部。
412(Precondition Failed):客户端发起了条件请求,且其中一个条件失败了。
413(Request Entity Too Large):实体主体部分过大。
414(Request URI Too Long):URL比服务器能处理的长。
415(Unsupport Media Type):无法理解或无法支持客户端所发实体的内容类型。
416(Requested Range Not Satisfiable):请求报文请求的是指定资源的某个范围,而此范围无效或无法满足。
417(Expectation Failed):请求的Expect请求首部包含一个期望,但服务器无法满足此期望。
500(Internal Server Error):服务器遇到一个妨碍它为请求提供服务的错误。
501(Not Implemented):客户端发起的请求超出服务器的能力范围。
502(Bad Gateway):作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应。
503(Service Unavailable):说明服务器现在无法为请求提供服务,将来可以。
504(Gateway Timeout):与408相似。
505(HTTP Version Not Support):服务器收到的请求使用了它无法或不愿意支持的协议版本。