在日常使用Linux服务器搭建Nginx+PHP网站运行环境中经常会碰到各种的报错,除了最常见的404错误以外5XX错误也是出现频率比较高的一类报错,一共包含下面几类。
500(服务器内部错误) 服务器遇到错误,无法完成请求。
501(尚未实施) 服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。
502(错误网关) 服务器作为网关或代理,从上游服务器收到了无效的响应。
503(服务不可用) 目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。
504(网关超时) 服务器作为网关或代理,未及时从上游服务器接收请求。
505(HTTP 版本不受支持) 服务器不支持请求中所使用的 HTTP 协议版本。
Nginx 500错误(Internal Server Error 内部服务器错误):500错误指的是服务器内部错误,也就是服务器遇到意外情况,而无法履行请求。
500错误一般有几种情况:
1、 web脚本错误,如php语法错误。
2、 访问量大的时候,由于系统资源限制,而不能打开过多的文件
一般分析思路:
(1)查看nginx error log ,查看php error log
(2)如果是too many open files,,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf,加上两句
* soft nofile 65535
* hard nofile 65535
修改nginx的配置文件
在worker_processes的下面增加一行
worker_rlimit_nofile 65535;
(3)如果是脚本的问题,则需要修复脚本错误,并优化代码
(4)各种优化都做好,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了。
3、硬盘空间满了
使用 df -k 查看硬盘空间是否满了。清理硬盘空间就可以解决500错误。nginx如果开启了access log,在不需要的情况下,最好关闭access log。access log会占用大量硬盘空间。
4、nginx配置文件错误
这里不是指语法错误,nginx如果配置文件有语法错误,启动的时候就会提示。当配置rewrite的时候,有些规则处理不当会出现500错误,请仔细检查自己的rewrite规则。如果配置文件里有些变量设置不当,也会出现500错误,比如引用了一个没有值的变量。
0 条评论。