LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法
第一种原因:安装lnmp一键安装包时php没安装成功而出现502 Bad Gateway,从0.9开始只要安装成功或失败都就会有提示。没安装成功一般原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。可以看一下是否存在/usr/local/php/sbin/php-fpm ,如果没有肯定没安装成功解决方法:
可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的,在网上搜索一下,或者把错误信息发上来。如果实在不会提供按http://lnmp.org/install.html这个安装时的lnmp.log日志文件(可以用winscp登陆下载lnmp.log,压缩并上传到本论坛),没有错误信息我们没法说什么原因。本方法只限于lnmp没安装成功,只要lnmp安装成功了这一项就没可能。
第二种原因:
在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway。php一些模块之间也可能会造成502,如Zend GuardLoader与Opcache,ioncube与Zend GuardLoader等,一般可以通过注释掉一个然后重启php-fpm,然后看是否还502进行排除。
第三种原因:
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加,如果php已升级到5.3.*以上且使用的是dynamic模式,需要调整pm.min_spare_servers和pm.max_spare_servers的值适当增加。最大值可以按内存xxMB/2/20 的整数来算(内存以MB为单位进行计算,/ 为除,取整数),最小值可以按内存/2/40 的整数来算,可以少点或多大,可以自己调整运行看看,同时pm.max_children也调整为和pm.max_spare_servers的值一样。
也有可能是max_requests值不够用。
第四种原因:
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300 或直接改成0 不限制,同时还需要修改/usr/local/php/etc/php-fpm.conf 调整request_terminate_timeout的值
再/etc/init.d/php-fpm restart重启使其生效。
第五种原因:
磁盘空间不足,如mysql日志占用大量空间清理一下磁盘上的文件,有部分剩余空间,重启即可恢复。
第六种原因:
查看php-cgi或php-fpm进程是否在运行
第七种原因:
将nginx.conf里的
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout都调大一点。
第八种可能原因:https://bbs.vpser.net/thread-1654-1-1.html
九、不要按网上找到的教程随便修改配置,网上找到的可能会路径不一样,也可能会导致502或有相关的错误产生,例如网上其他的教程可以使用的是9000端口,而lnmp默认使用socket,你如果按网上的教程设置的端口或socket路径不一样那肯定100% 502无疑。
LNMP默认使用unix套接字,虚拟主机配置文件里 fastcgi_pass参数为unix:/tmp/php-cgi.sock; 需要确保/usr/local/php/etc/php-fpm.cnf 里的设置,php 5.2为<value name=“listen_address”>/tmp/php-cgi.sock</value> php 5.3及以上版本为listen = /tmp/php-cgi.sock ,同时/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虚拟主机配置里的fastcgi_passunix:/tmp/php-cgi.sock; 不一致就必定502。
有时候unix套接字模式下可能会502,可以尝试改成tcp/ip的方式 php 5.2下<value name=“listen_address”>/tmp/php-cgi.sock</value>替换为<value name=“listen_address”>127.0.0.1:9000</value>php 5.3及以上版本listen = /tmp/php-cgi.sock替换为listen = 127.0.0.1:9000,nginx配置文件及虚拟主机配置文件里fastcgi_passunix:/tmp/php-cgi.sock;替换为fastcgi_pass127.0.0.1:9000;之后重启试试。
十、如果虚拟主机的日志文件过大也可能会造成502问题。
建议定期清空一下虚拟主机的日志文件。
十一、有些程序或者程序的主题有死循环或其他非常占用资源的代码也可能会引起502,可以尝试暂时注释掉可能的主机的配置文件,重启看看是否还会502。
十二、如果以上方法都试过,但还有时会出现502错,可以尝试添加502自动重启脚本:https://bbs.vpser.net/thread-1913-1-1.html
十三、实在找不到原因可以开启slowlog看看慢日志是否有相关有用的信息:https://bbs.vpser.net/viewthread.php?tid=10251&page=1&fromuid=3#pid30582
十四、升级PHP后出现502,可能php没升级成功。
如果是1.0之前的版本升级PHP到5.4或5.5后,可能是因为这个原因:https://bbs.vpser.net/thread-10763-1-1.html
十五、CentOS 6 下,wordpress访问后台、安装wp、安装插件报502错误的解决方法:https://bbs.vpser.net/thread-10767-1-1.html
PS:lnmp相关问题请在论坛反馈,QQ/旺旺上只提供付费代维代装及代购服务。 稍微记录一下方便使用linode的兄弟,本来在linode centos 32 上装lnmp1.2版,也出现502错误,后来装lnmp1.3版,就ok了 主要是脚本中编译PHP前需要一些增强模组,这些可能影响编译成功,之前在PS3上试装就碰到这些问题。 php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway
回复 1# 的帖子
删除eaccelerator的eaccelerator.iniw文件即可! D9 运行了一天很正常 半夜0点……502了lnmp restart了一下
又好了…………神奇
回复 6# 的帖子
可能是php-fpm的进程数有点少,稍微添加上几个实施。修改php-fpm.conf 里面的max_children 后面的值。 很奇怪的毛病,我reinstall 了好几次os 分别是32位的 64位的centos刚装好的时候 一切正常 重启 什么的也一切ok
但好景不长 一般第二天就会无法访问
restart后出现如下提示:
Reload LNMP...
Reload Nginx configure...
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
Nginx program is reloding!
ERROR! MySQL manager or server PID file could not be found!
Starting MySQL.... ERROR! Manager of pid-file quit without updating file.
Shutting down php_fpm ................................... failed
Starting php_fpmdone
顺便说下,这是photonvps……D9的非常正常 权你们不要用php-fpm启动fastCGI了,换spawn-fcgi方式启动,我们公司现在全部换spawn-fcgi启动了 用 lnmp0.4 安裝包裝 Linode、2HOST Centos5 64位元,都沒問題。
昨天看到 RackVM 的便宜 OpenVPS 128MB,就買來玩玩。
但就是安裝不起來 (502 Bad Gateway)
不知是不是 128MB 太小的關係。 原帖由 licess 于 2010-7-19 10:15 发表 https://bbs.vpser.net/images/common/back.gif
可能是php-fpm的进程数有点少,稍微添加上几个实施。修改php-fpm.conf 里面的max_children 后面的值。
正解!:victory: 唉 也是遇到502错误
以前自己手动安装的就没遇到过
老是刷新出现502错误的
后来让我改了一下 就不会出现了
可以参考下我的文章:
Nginx 502 Bad Gateway错误的终极解决方案 彻底解决lnmp出现的502错误
http://itfis.com/post-212.html
[ 本帖最后由 lovegx999 于 2011-2-18 10:14 编辑 ]
军哥,来解决我的问题一次嘛. 真的. 高难度.
修改完my.cnf 又出新问题了MYSQL 占用了60%这些程序也占用好多啊
PING得通 网站打不开
这是刚才的问题 http://www.hostloc.com/thread-37882-1-1.html 刚解决完.现在又复发了.
用军哥的LNMP, 一直没事的啊. 郁闷 nginx.conf php-fpm my.cnf都按照网上的设置和坛友们回复的指导 修改了. 刚才还好好的 . 现在一下子MYSQL占用高 现在是NGINX
军哥,来解决我的问题一次嘛. 真的. 高难度.
修改完my.cnf 又出新问题了MYSQL 占用了60%这些程序也占用好多啊
PING得通 网站打不开
这是刚才的问题 http://www.hostloc.com/thread-37882-1-1.html 刚解决完.现在又复发了.
用军哥的LNMP, 一直没事的啊. 郁闷 nginx.conf php-fpm my.cnf都按照网上的设置和坛友们回复的指导 修改了. 刚才还好好的 . 现在一下子MYSQL占用高 现在是NGINX 安装顺利 提示成功
但是php文件502
php mysql进程均未启动
也没有 /usr/local/php 和 /usr/local/mysql这两个目录