将 php 升级到 5.5 后出现 502 bad gateway

将 php 升级到 5.5 后出现 502 bad gateway

在我的 ubuntu 12.10 服务器上,我将 php 升级到了 5.5。在我的 wordpress 网站出现 502 错误后,我进行了一些谷歌搜索,发现我需要更改我的 nginx 配置以匹配 php 脚本的传递,而php5-fpm.sock不是端口 9000。因此,我将网站的配置文件更改为以下内容:

 # Pass PHP scripts on to PHP-FPM
    location ~* \.php$ {
        try_files       $uri /index.php;
        fastcgi_index   index.php;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

然后我照做了service nginx restart。但 502 错误仍然存​​在。

检查错误日志后我得到:

2014/03/30 14:16:37 [error] 1451#0: *21 connect() failed (111: Connection refused) while connecting to upstream, client: 81.107.86.251,, server: www.harryg.me, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "harryg.me"

因此看起来 php-fpm 正在尝试将内容传递给fastcgi://127.0.0.1:9000。 为什么它不遵守配置文件的更改?

编辑:

/etc/php5/fpm/pool.d/www.conf的有listen = /var/run/php5-fpm.sock在里面。

答案1

我也遇到了这个问题,我通过使用 TCP 连接解决了它。引用这个答案nginx + php5-fpm 中的错误 502(通过 danmash 的链接找到):

问题出在套接字本身,它在高负载情况下的问题是众所周知的。请考虑使用 TCP\IP 连接而不是 unix 套接字,为此您需要进行以下更改:

  • 在 php-fpm 池配置中替换listen = /var/run/php5-fpm.socklisten = 127.0.0.1:7777
  • 在 /etc/nginx/php_location 中替换fastcgi_pass unix:/var/run/php5-fpm.sock;fastcgi_pass 127.0.0.1:7777;

就你的情况来说,确实是127.0.0.1:9000

答案2

Nginx 错误 502 表示代理已关闭或未返回任何数据或有效数据。确保没有 nginx 或代理代码本身工作正常。有关详细说明,请查看 nginx 和 php 登录请求。

相关内容