在我的 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.sock
为listen = 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 登录请求。