Nginx 500错误总结

500(服务器内部错误) 服务器遇到错误,没法完成请求。
501(还没有实施) 服务器不具有完成请求的功能。例如,当服务器没法识别请求方法时,服务器可能会返回此代码。
502(错误网关) 服务器做为网关或代理,从上游服务器收到了无效的响应。
503(服务不可用) 目前没法使用服务器(因为超载或进行停机维护)。一般,这只是一种暂时的状态。
504(网关超时) 服务器做为网关或代理,未及时从上游服务器接收请求。
505(HTTP 版本不受支持) 服务器不支持请求中所使用的 HTTP 协议版本。

 

Nginx 500错误(Internal Server Error  内部服务器错误):500错误指的是服务器内部错误,也就是服务器遇到意外状况,而没法履行请求。php

500错误通常有几种状况:

1. web脚本错误,如php语法错误,lua语法错误等。html

2. 访问量大的时候,因为系统资源限制,而不能打开过多的文件nginx

通常分析思路:

(1)查看nginx error log ,查看php error logweb

(2)若是是too many open files,修改nginx的worker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf数据库

(3)若是是脚本的问题,则须要修复脚本错误,并优化代码服务器

(4)各类优化都作好,仍是出现too many open files,那就要考虑作负载均衡,把流量分散到不一样服务器上去了。并发

 

错误缘由总结:

一、硬盘空间满了 

使用 df -k 查看硬盘空间是否满了。清理硬盘空间就能够解决500错误。nginx若是开启了access log,在不须要的状况下,最好关闭access log。access log会占用大量硬盘空间。 

二、nginx配置文件错误 

这里不是指语法错误,nginx若是配置文件有语法错误,启动的时候就会提示。当配置rewrite的时候,有些规则处理不当会出现500错误,请仔细检查本身的rewrite规则。若是配置文件里有些变量设置不当,也会出现500错误,好比引用了一个没有值的变量。 

三、若是上面的问题都不存在多是模拟的并发数太多了,须要调整一下nginx.conf的并发设置数 

解决方法是: 

1 打开/etc/security/limits.conf文件,加上两句负载均衡

复制代码代码以下:
* soft nofile 65535 
* hard nofile 65535 


2 打开/etc/nginx/nginx.conf 
在worker_processes的下面增长一行 post

复制代码代码以下:
worker_rlimit_nofile 65535;


3 从新启动nginx,从新载入设置 优化

复制代码代码以下:
kill -9 `ps -ef | grep php | grep -v grep | awk '{print $2}'` 
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 100 -u www-data -f /usr/bin/php-cgi 
killall -HUP nginx 

重启后再看nginx的错误日志,也没有发现500报错的状况了。 

四、有多是数据库问题个人在nginx日志php日志都没有发现什么问题, 最后发现数据库访问不了,修正后问题解决。

相关文章
相关标签/搜索