<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>深度VPS &#187; 502 Bad Gateway</title>
	<atom:link href="http://www.deepvps.com/tag/502-bad-gateway/feed" rel="self" type="application/rss+xml" />
	<link>http://www.deepvps.com</link>
	<description>专注VPS技术，关注前端技术</description>
	<lastBuildDate>Sat, 04 Feb 2023 14:00:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nginx 502 Bad Gateway 自动重启脚本</title>
		<link>http://www.deepvps.com/nginx-502-bad-gateway-restart.html</link>
		<comments>http://www.deepvps.com/nginx-502-bad-gateway-restart.html#comments</comments>
		<pubDate>Tue, 26 Nov 2013 13:25:04 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[网络杂谈]]></category>
		<category><![CDATA[502 Bad Gateway]]></category>
		<category><![CDATA[脚本]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=1405</guid>
		<description><![CDATA[需要确保系统已安装curl，centos可以执行：yum install curl，debian/ubuntu可以执行：apt-get install curl
用winscp或vi有或nano在/root目录下创建502.sh 内容如下：
#!/bin/bash
# author: licess
# website: http://www.lnmp.org
CheckURL=&#8221;http://www.abc.com&#8221;
STATUS_CODE=`curl -o /dev/null -m 10 &#8211;connect-timeout 10 -s -w %{http_code} $CheckURL`
#echo &#8220;$CheckURL Status Code:\t$STATUS_CODE&#8221;
if [ "$STATUS_CODE" = "502" ]; then
/etc/init.d/php-fpm restart
fi
chmod +x /root/502.sh
用crontab 一分钟执行一次。上面的http://www.abc.com改成你的地址，如果该页面是静态，需换成以php的页面地址。
crontab 教程：http://www.deepvps.com/linux-vps-crond.html
其他的重启脚本，下面这个如果php函数里禁用了shell_exec 将无法使用。
#!/usr/bin/php
&#60;?
$url = &#8216;http://www.abc.net&#8217;;
$cmd = &#8216;/etc/init.d/php-fpm restart&#8217;;
for($i = 0; $i &#60; 5; $i ++){
$exec = &#8220;curl &#8211;connect-timeout 3 -I $url 2&#62;/dev/null&#8221;;
$res = [...]]]></description>
			<content:encoded><![CDATA[<p>需要确保系统已安装curl，centos可以执行：yum install curl，debian/ubuntu可以执行：apt-get install curl</p>
<p>用winscp或vi有或nano在/root目录下创建502.sh 内容如下：<span id="more-1405"></span></p>
<blockquote><p>#!/bin/bash<br />
# author: licess<br />
# website: http://www.lnmp.org</p>
<p>CheckURL=&#8221;http://www.abc.com&#8221;</p>
<p>STATUS_CODE=`curl -o /dev/null -m 10 &#8211;connect-timeout 10 -s -w %{http_code} $CheckURL`<br />
#echo &#8220;$CheckURL Status Code:\t$STATUS_CODE&#8221;<br />
if [ "$STATUS_CODE" = "502" ]; then<br />
/etc/init.d/php-fpm restart<br />
fi</p></blockquote>
<p>chmod +x /root/502.sh<br />
用crontab 一分钟执行一次。上面的http://www.abc.com改成你的地址，如果该页面是静态，需换成以php的页面地址。<br />
crontab 教程：http://www.deepvps.com/linux-vps-crond.html</p>
<p>其他的重启脚本，下面这个如果php函数里禁用了shell_exec 将无法使用。</p>
<blockquote><p>#!/usr/bin/php<br />
&lt;?<br />
$url = &#8216;http://www.abc.net&#8217;;<br />
$cmd = &#8216;/etc/init.d/php-fpm restart&#8217;;</p>
<p>for($i = 0; $i &lt; 5; $i ++){<br />
$exec = &#8220;curl &#8211;connect-timeout 3 -I $url 2&gt;/dev/null&#8221;;<br />
$res = shell_exec($exec);</p>
<p>if(stripos($res,&#8217;502 Bad Gateway&#8217;) !== false){<br />
shell_exec($cmd);<br />
exit();<br />
}<br />
}<br />
?&gt;</p></blockquote>
<p>用crontab 一分钟执行一次。 url和cmd根据自己的改。</p>
<p>原理就是用curl获取HTTP头，发现502状态码就执行重启php-fpm的命令。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/nginx-502-bad-gateway-restart.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法</title>
		<link>http://www.deepvps.com/lnmp-502.html</link>
		<comments>http://www.deepvps.com/lnmp-502.html#comments</comments>
		<pubDate>Mon, 25 Nov 2013 06:11:32 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS管理维护]]></category>
		<category><![CDATA[502 Bad Gateway]]></category>
		<category><![CDATA[LNMP]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=1402</guid>
		<description><![CDATA[今天一个安装lnmp的VPS频繁出现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
第三种原因：
在安装好使用过程中出现502问题，一般是因为默认php-cgi进程是5个，可能因为phpcgi进程不够用而造成502，需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加，如果php已升级到5.3.*以上且使用的是dynamic模式，需要调整pm.max_spare_servers参数的值。
也有可能是max_requests值不够用。
第四种原因：
php执行超时，修改/usr/local/php/etc/php.ini 将max_execution_time 改为300
第五种原因：
磁盘空间不足，如mysql日志占用大量空间清理一下磁盘上的文件，有部分剩余空间，重启即可恢复。
第六种原因：
查看php-cgi进程是否在运行
第七种原因：
将nginx.conf里的
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout都调大一点。
第八种可能原因：http://bbs.vpser.net/thread-1654-1-1.html
九、也可以尝试将unix套接字改成tcp/ip的，修改/usr/local/php/etc/php-fpm.cnf 里设置&#60;value name=“listen_address”&#62;/tmp/nginx.socket&#60;/value&#62; 改成&#60;value name=“listen_address”&#62;127.0.0.1:9000&#60;/value&#62; ，同时/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虚拟主机配置里的fastcgi_pass  unix:/tmp/php-cgi.sock; 替换为fastcgi_pass  127.0.0.1:9000;  之后重启试试。
十、如果虚拟主机的日志文件过大也可能会造成502问题。
建议定期清空一下虚拟主机的日志文件。
十一、有些程序或者程序的主题有死循环或其他非常占用资源的代码也可能会引起502，可以尝试暂时注释掉可能的主机的配置文件，重启看看是否还会502。
十二、如果以上方法都试过，但还有时会出现502错，可以尝试添加502自动重启脚本 http://www.deepvps.com/nginx-502-bad-gateway-automatically-restart-script.html。
]]></description>
			<content:encoded><![CDATA[<p>今天一个安装lnmp的VPS频繁出现502 Bad Gateway错误，然后再军哥的网站找到一个解决办法的文章，转载过来方便后来人。</p>
<p>第一种原因：安装lnmp一键安装包时php没安装成功而出现502 Bad Gateway，从0.9开始只要安装成功或失败都就会有提示。没安装成功一般原因是在安装php前，脚本中某些lib包可能没有安装上，造成php没有编译安装成功。可以看一下是否存在/usr/local/php/sbin/php-fpm ，如果没有肯定没安装成功<br />
解决方法：<br />
可以尝试根据lnmp一键安装包中的脚本手动安装一下，看看是什么错误导致的，在网上搜索一下，或者把错误信息发上来。如果实在不会提供按http://lnmp.org/install.html这个安装时的lnmp.log日志文件（可以用winscp登陆下载lnmp.log，压缩并上传到本论坛），没有错误信息我们没法说什么原因。<strong>本方法只限于lnmp没安装成功，只要lnmp安装成功了这一项就没可能。</strong><span id="more-1402"></span></p>
<p>第二种原因：<br />
在php.ini里，eaccelerator配置项一定要放在Zend Optimizer配置之前，否则也可能引起502 Bad Gateway</p>
<p>第三种原因：<br />
在安装好使用过程中出现502问题，一般是因为默认php-cgi进程是5个，可能因为phpcgi进程不够用而造成502，需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加，如果php已升级到5.3.*以上且使用的是dynamic模式，需要调整pm.max_spare_servers参数的值。<br />
也有可能是max_requests值不够用。</p>
<p>第四种原因：<br />
php执行超时，修改/usr/local/php/etc/php.ini 将max_execution_time 改为300</p>
<p>第五种原因：<br />
磁盘空间不足，如mysql日志占用大量空间清理一下磁盘上的文件，有部分剩余空间，重启即可恢复。</p>
<p>第六种原因：<br />
查看php-cgi进程是否在运行</p>
<p>第七种原因：<br />
将nginx.conf里的<br />
fastcgi_connect_timeout<br />
fastcgi_send_timeout<br />
fastcgi_read_timeout都调大一点。</p>
<p>第八种可能原因：http://bbs.vpser.net/thread-1654-1-1.html</p>
<p>九、也可以尝试将unix套接字改成tcp/ip的，修改/usr/local/php/etc/php-fpm.cnf 里设置&lt;value name=“listen_address”&gt;/tmp/nginx.socket&lt;/value&gt; 改成&lt;value name=“listen_address”&gt;127.0.0.1:9000&lt;/value&gt; ，同时/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虚拟主机配置里的fastcgi_pass  unix:/tmp/php-cgi.sock; 替换为fastcgi_pass  127.0.0.1:9000;  之后重启试试。</p>
<p>十、如果虚拟主机的日志文件过大也可能会造成502问题。<br />
建议定期清空一下虚拟主机的日志文件。</p>
<p>十一、有些程序或者程序的主题有死循环或其他非常占用资源的代码也可能会引起502，可以尝试暂时注释掉可能的主机的配置文件，重启看看是否还会502。</p>
<p>十二、如果以上方法都试过，但还有时会出现502错，可以尝试添加502自动重启脚本 http://www.deepvps.com/nginx-502-bad-gateway-automatically-restart-script.html。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/lnmp-502.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
