Nginx
nginx 與 PHP-FPM 通信失敗
就在今天,我收到了我的第一個 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 的配置文件,或使用
lsof
,netstat -a
或類似方法來驗證這一點。編輯:剛剛檢查了我的設置。我在這裡使用 Apache,所以這不會直接幫助,但 FastCGI 配置的行顯示為:
FastCgiExternalServer /var/run/apache2/php5.fcgi -idle-timeout 600 -flush -socket /var/run/php5-fpm.sock
如您所見,它指的是一個套接字文件,即
/var/run/php5-fpm.sock
.