nginx 502坏网关

Joe*_*ard 60 php fastcgi nginx

当使用spawn fcgi生成php5-cgi时,我得到了一个带有nginx的502 Bad Gateway.

我使用它来跨越服务器启动的实例,使用rc.local中的以下行

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
Run Code Online (Sandbox Code Playgroud)

大概我得到错误,因为spawn-fcgi/php5-cgi死了,没有什么可以在那里听解析php.

我在任何地方都能看到的日志中什么都没有,我没有想法(和nginx的新设置一样)

小智 55

我执行了我localhost的页面显示了502 bad gateway消息.这对我有所帮助:

  1. 编辑 /etc/php5/fpm/pool.d/www.conf
  2. 更改listen = /var/run/php5-fpm.socklisten = 127.0.0.1:9000
  3. 确保在nginx.conf中正确设置了位置.
  4. sudo service php5-fpm restart

也许它会帮助你.

来自:http://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm

  • 这个实际上是帮助 (2认同)

sdo*_*lgy 9

出现502错误是因为nginx无法切换到php5-cgi.您可以尝试重新配置php5-cgi以使用unix套接字而不是tcp ..然后调整服务器配置以指向套接字而不是tcp ...

ps auxww | grep php5-cgi #-- is the process running?  
netstat -an | grep 9000 # is the port open? 
Run Code Online (Sandbox Code Playgroud)

  • 如果端口未打开,进程是什么? (7认同)
  • 就我而言,服务已启动,但 `netstat -an | 的结果中没有任何内容。grep 9000`???? (2认同)

tec*_*eet 8

转到/etc/php5/fpm/pool.d/www.conf并且如果您正在使用套接字或此行已取消注释

listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)

设置其他几个值: -

listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Run Code Online (Sandbox Code Playgroud)

别忘了重启php-fpm和nginx.确保使用相同的nginx所有者和组名.


Ken*_*nce 8

您必须匹配PHP-FPM和Nginx的设置才能通过套接字或TCP进行通信.

所以去/etc/php5/fpm/pool.d/www.conf看看这一行:

listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)

然后去 /etc/nginx/nginx.conf

寻找这个:

upstream php {
    server unix:/var/run/php5-fpm.socket;
}
Run Code Online (Sandbox Code Playgroud)

匹配这些值,你应该全部设置.


tjb*_*tjb 5

如果运行Linux服务器,请确保您的IPTABLES配置正确.

执行sudo iptables -L -n,您将收到您的开放端口列表.如果没有Iptables规则来打开服务于fcgi脚本的端口,您将收到502错误.必须任何明确拒绝所有数据包的规则(即表单规则"REJECT ALL -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable或类似规则)之前列出打开正确端口的Iptables规则

在我的配置上,要正确打开端口,我必须执行此命令(假设我的fcgi服务器在端口4567上运行):

sudo iptables -I INPUT 1 -p tcp --dport 4567 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

警告:这将打开4567端口到全世界.

所以做这样的事情可能会更好:

   sudo iptables-save >> backup.iptables
   sudo iptables -D INPUT 1 #Delete the previously entered rule
   sudo iptables -I INPUT 1 -p tcp --dport 8080 -s localhost -j ACCEPT # Add new rule
Run Code Online (Sandbox Code Playgroud)

这样做为我删除了502错误.