Nginx出现500 Internal Server Error 错误的解决方案

今日在使用 Nginx 的时候出现 500 错误,就搜索了一下错误代码,分享给大家。

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

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

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据测试结果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

但很多人用 Nginx 的时候都会出现 500 错误,根据我使用的情况来看,有以下几种情况。  

1、是否磁盘空间不足?

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

2、nginx配置文件错误?

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

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

4、还有就是Linux索引节点(inode)用满导致故障的,df -i    

由索引节点(inode)爆满引发500问题https://www.jb51.net/article/175430.htm

inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。 而服务器的Block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足。

一般分析思路:

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

nginx 错误日志 error.log 默认位置:/usr/local/nginx/logs

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

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

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

解决方法是

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日志都没有发现什么问题, 最后发现数据库访问不了,修正后问题解决。

如果按上述方法仍然解决不了问题,就可能是配置或是程序有错误了。

1 查看nginx的错误日志,找到可能的原因。

如果提示某些儿PHP扩展没有安装,则去php.ini中打开对应该的扩展或是安装对应该的扩展,重启nginx和php-fpm,再次刷新页面。

2 如果数据库连接有问题,也可能会出现500错误,不过日志中一定会体现的

在日志中提示相应的数据库连接有问题了,就要去查看数据库连接是否正确。根据日志,修改对应该的文件,数据库问题解决后,页面即恢复正常。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解php+nginx 服务发生500 502错误排查思路

    概述 当线上的服务中访问中出现500或者502错误时,需要紧急处理,排查问题,该怎么做?可以通过分析一些错误日志或者跟踪php-fpm进程来进行问题定位. nginx error_log nginx的error_log在nginx的配置文件中定义的 server { listen 80; server_name localhost; root /var/www; access_log /Users/jiao/logs/default.access.log; error_log /Users/ji

  • nginx提示:500 Internal Server Error错误的解决方法

    现在越来越多的站点开始用 Nginx ,("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布. 在高并发连接的情况下,Nginx是Apache服务器不错的替代品.Nginx同时也可以作为7层负载均衡服务器来使用.根据测试结果,Nginx 0.6

  • nginx提示:500 Internal Server Error错误解决办法

     nginx提示:500 Internal Server Error错误解决办法 前言: 今天发现网站无法上传资源和发布文章,通过浏览器查看服务器的返回信息 500 Internal Server Error 刚开始我以为是应用服务器或者是程序异常,检查了下各自的日志,连请求记录都无,程序代码里也没抛出过该类型的异常,所以可以从服务器或者Nginx中找原因了. 1.是否磁盘空间不足? 使用 df -k 查看硬盘空间是否满了.清理硬盘空间就可以解决500错误.nginx如果开启了access lo

  • Nginx worker_connections配置太低导致500错误案例

    最近一次安全培训,需要用到安全攻防平台,结果30几个人登录上去直接爆出500错误.不知道什么原因,后来找来SSH登录用户,密码,逐步排查,发现了Nginx worker_connections配置问题. 原来是Nginx配置文件中的worker_connections配置太低,只有50,导致与php-fpm交互过程中超出了connections限制,出现了500错误.直接将此参数的值改成10240就解决了此问题.

  • Nginx出现500 Internal Server Error 错误的解决方案

    今日在使用 Nginx 的时候出现 500 错误,就搜索了一下错误代码,分享给大家. 500(服务器内部错误)    服务器遇到错误,无法完成请求. 501(尚未实施)   服务器不具备完成请求的功能.例如,当服务器无法识别请求方法时,服务器可能会返回此代码. 502(错误网关)   服务器作为网关或代理,从上游服务器收到了无效的响应. 503(服务不可用)  目前无法使用服务器(由于超载或进行停机维护).通常,这只是一种暂时的状态. 504(网关超时)   服务器作为网关或代理,未及时从上游服

  • HTTP 错误 500.19- Internal Server Error 错误解决方法

    刚在本机部署了一个WebService测试,浏览的时候出现了"HTTP 错误 500.19 - Internal Server Error "错误,如下图: 经过检查发现是由于先安装vs2008后安装iis的缘故,只需重新注册下AspNet就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示符窗口. 2 进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录. 3 输入aspnet_regiis.exe –i 执行既可 注意:如

  • php+redis在实际项目中HTTP 500: Internal Server Error故障排除

    问题描述 用户量快速增长,访问量在短时间内翻倍,由于前期容量规划做得比较好,硬件资源可以支撑,可是软件系统方面出现了大问题: 40% 的请求都会返回 HTTP 500: Internal Server Error 通过查看日志,发现错误是在 PHP <-> Redis 的连接处理上 调试处理 第1次 刚开始时并没有找到根本原因,只能尝试各种与错误相关的办法,例如: 增加 PHP 连接数,并把超时时间从 500ms 增加到 2.5s 禁止掉 PHP 设置中的 default_socket_tim

  • Nginx服务500:Internal Server Error原因之一

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

  • HTTP 错误 500.19 - Internal Server Error解决办法详解

    HTTP 错误 500.19 - Internal Server Error 最近做项目出现了这个错误,经过同事之间的讨论未能解决,之后百度一下找到了解决方法,这里就说下希望大家遇到这种错误可以顺利解决. 无法访问请求的页面,因为该页的相关配置数据无效.如下图:  解决方法,到站点目录的属性,安全标签,添加用户(Everyone),并给修改权限: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • Fckeditor XML Request error:internal server error (500) 解决方法小结

    原来一直能用的ecshop后台信息发布里面的fckeditor上传功能,换了个机器后不能用了.以为是文件损坏,上传一边不行. 什么xml错误,还弹出一个大的JavaScript alert警告框,内容就是服务器端错误的500内容 网上搜,又说是配置问题,主题问题,想想都不应该,直接请求 复制代码 代码如下: filemanager/connectors/php/connector.php 出了服务器的500错误,html文件能访问,txt也行. 后来从根目录开始查,发现到fckeditor目录里

  • 收集整理的http/1.1 500 server error错误的解决方法

    第一种: 可能是下面的三种情况,原因是这些组件可能受到了破坏,依次在运行里面输入试试 regsvr32 %windir%/system32/jscript.dll regsvr32 %windir%/system32/vbscript.dll C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i  dotnet版本号现在有三种,你装的哪一个就改成哪一个 v1.1.4322 v1.0.3705 v2.0.50727 第二

  • destoon安装出现Internal Server Error的解决方法

    很多朋友在安装destoon的时候出现"Internal Server Error"的错误提示信息,导致无法安装,其解决方法如下: 方法一.删除根目录下.htaccess文件,如果无效,请尝试方法二: 方法二.对于Liunx/Unix服务器,如果不支持0777属性,可修改根目录config.inc.php: $CFG['file_mod'] = 0777; 改为: $CFG['file_mod'] = 0755 ; 然后,FTP修改已经被系统自动修改为0777属性的目录和文件为0755

随机推荐