Nginx 500错误总结

Nginx 500错误总结

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

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

500错误一般有几种情况:

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

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

一般分析思路:

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

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

(3)如果是脚本的问题,则需要修复脚本错误,并优化代码

(4)各种优化都做好,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了。

错误原因总结:

1、硬盘空间满了

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

2、nginx配置文件错误

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

3、如果上面的问题都不存在可能是模拟的并发数太多了,需要调整一下nginx.conf的并发设置数

解决方法是:

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

复制代码代码如下:

* soft nofile 65535 
* hard nofile 65535

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

复制代码代码如下:

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报错的情况了。

4、有可能是数据库问题我的在nginx日志php日志都没有发现什么问题, 最后发现数据库访问不了,修正后问题解决。

时间: 2024-08-28 09:17:42

Nginx 500错误总结的相关文章

nginx 500错误 导致一些数据库备份程序(phpmyadmin/帝国备份王)打开空白

PHP版本 5.4 nginx 1.62 nginx报错: 2015/04/07 05:50:43 [error] 1788#0: *413 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected end of file in /data/bei123/class/functions.php on line 1246″ while reading response header from up

由php nginx 出现 500错误的启示

今在一程序里,传递某个session_id后竟然返回 nginx 500错误.而传递另外一个session_id则不会出现错误,打开调试模式后才知道.是因为php出现语法错误,且在php.ini中关闭了 display_error,并在程序中关闭了错误信息,所以直接返回 500错误给nginx. php-fpm 文档中有这样解析: 如 果被访问的php脚本包含语法错误,并且display_errors设为false,且没有进一步的设置,会立刻返回”HTTP/1.0 500 Internal Se

nginx出现500错误

今天早上,boss反映,有一个网站打不开了. 打开,提示500错误. 网站是用nginx发布的,里面有N多网站. 为什么偏偏m网站index.php不能打开,其他文件可以打开.www网站却访问正常了,其他的也正常. 先看了一下php-fpm日志,没有发现错误或者连接池busy的问题 /usr/local/php/var/log/php-fpm.log 再看nginx访问日志,刷新太快了,差不多都是200状态. /usr/local/nginx/logs/access.log boss一直在催什么

nginx有时候图片下载或者500错误问题原因

有时候通过nginx的方式去访问url,会出现500错误,或者导致下载的图片不完整. 有可能是因为nginx的配置不对,查看nginx的log会发现没有权限访问proxy_temp. 首先确认工作进程(worker process)的用户: 检查配置文件nginx.conf的user指令 user  www-data; 然后查看运行进程的用户 #ps aux | grep "nginx: worker process" | awk '{print $1}' 如果二者不一致就会出现上述问

nginx 设置错误的自定义404页面跳转到500

5年前写的站, 当时是在apache下写的error page, 换了nginx后, 404页面直接跳到了500 服务器内部错误. 只需要在配置 try_files 的时候指定一下就可以了 我的是debian, 在/etc/nginx/site-available/default 里面location / server{ </pre><pre name="code" class="plain"> location / { <span s

Nginx+PHP框架laravel状态码500错误解决!

我们先来看下报错 状态码是:==500== 通常是服务器那的错误. 然后 Emmmmmm..... 测试1 先修改了 index.php 的代码 在代码最前面加上了: echo "1111"; exit(); 看下返回结果: 可以看到,服务器可以正常解析. 然后我们看一下Nginx报错日志: ① 来到Nginx的日志目录下 cat error.log 我们看下返回结果: ==signal process started== ==是系统发出的通知,并非产生错误== 后来经过检查,发现数据

运维神器-分分钟定位500错误!

做过运维的小伙伴都知道,当用户浏览器上出现白屏.应用端API得到500错误.取到数据为空是非常崩溃的一件事情.500错误是服务器端非常常见的一个错误,有可能是开发时导致的语法错误,也有可能是文件引用导致的错误.当用户反馈了 500 错误之后,而我们运维童鞋们面对一个集群的后端服务器,如果没有方便的工具管理和同步,下手查找问题,是一个即耗时又费力的痛苦过程. 在最开始的时候,每次遇到这种情况,我们运维同学们就分别登录几台Web服务器,去查找可能记录错误日志的地方,找出错误的真凶,以让开发童鞋们来改

定位500错误!

定位500错误! 做过运维的小伙伴都知道,当用户浏览器上出现白屏.应用端API得到500错误.取到数据为空是非常崩溃的一件事情.500错误是服务器端非常常见的一个错误,有可能是开发时导致的语法错误,也有可能是文件引用导致的错误.当用户反馈了 500 错误之后,而我们运维童鞋们面对一个集群的后端服务器,如果没有方便的工具管理和同步,下手查找问题,是一个即耗时又费力的痛苦过程.在最开始的时候,每次遇到这种情况,我们运维同学们就分别登录几台Web服务器,去查找可能记录错误日志的地方,找出错误的真凶,以

500错误排查过程

官网在访问的时候不定时会出现500的错误,打开nginx的错误日志发现,里面有好多"Too many open files"的报错.这个问题的出现原因是system对程序打开files数量的限制问题.于是对系统做如下优化: (1)vi /etc/security/limits.conf  (修改参数) * soft nofile 102400 * hard nofile 102400 vi /ect/sysctl.conf # For more information, see sys