Nginx

nginx 與 PHP-FPM 通信失敗

  • August 5, 2012

就在今天,我收到了我的第一個 VPS,並想在上面安裝一個 nginx + PHP + MariaDB 設置。而且,好吧,我確實做到了,但是我在配置它時遇到了問題。

讓 nginx 提供靜態 .html 文件沒有問題,嘗試提供動態 PHP 文件但只顯示公共“502 Bad Gateway”消息。我對 nginx 日誌文件的解釋表明 nginx 和 PHP-FPM 之間存在通信錯誤,但我是一個該死的新手,所以這可能是非常錯誤的。

php5-fpm.log:

[05-Aug-2012 21:50:10] NOTICE: fpm is running, pid 10982
[05-Aug-2012 21:50:10] NOTICE: ready to handle connections

nginx 的 error.log 的一部分:

2012/08/06 00:13:20 [error] 11419#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
2012/08/06 00:23:21 [error] 11419#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
2012/08/06 00:23:22 [error] 11419#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
2012/08/06 00:23:23 [error] 11419#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$

我瀏覽了大多數配置,但我首先將幾乎所有配置都保留了預設值。PHP-FPM 仍在埠 9000 上執行,一個 nginx 應該查詢…

這是一個長鏡頭(因為我不知道您的發行版、版本或配置),但如果我沒記錯的話,PHP-FPM 的最新預設配置(至少在 Debian 上)改為基於文件的通信(UNIX 套接字) TCP 的。

您可以通過檢查 PHP-FPM 的配置文件,或使用lsofnetstat -a或類似方法來驗證這一點。

編輯:剛剛檢查了我的設置。我在這裡使用 Apache,所以這不會直接幫助,但 FastCGI 配置的行顯示為:

FastCgiExternalServer /var/run/apache2/php5.fcgi -idle-timeout 600 -flush -socket /var/run/php5-fpm.sock

如您所見,它指的是一個套接字文件,即/var/run/php5-fpm.sock.

引用自:https://serverfault.com/questions/414480