Php
Nginx + PHP-FPM = 502 錯誤網關
我剛剛啟動了一個新的 Rackspace 雲伺服器並執行了以下命令:
apt-get install php5 nginx php-fpm
當我導航到 IP 地址時,我會看到預設的 Nginx 消息。
/etc/nginx/sites-available/default
然後我從另一個工作設置中複製了我的文件:server { listen 80; server_name localhost; root /srv/www; index index.php; location / { try_files $uri $uri/ /controllers$uri.php; location ~ \.php$ { try_files $uri /index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } } }
我創建
index.php
並/srv/www
開始nginx
:php-fpm
/etc/init.d/nginx start /etc/init.d/php5-fpm start
我收到 502 Bad Gateway 錯誤。難道我做錯了什麼?
由於我無法添加評論,因此我將其發佈為答案…
檢查
/etc/php5/fpm/pool.d/www.conf
(或其中的文件)是否設置為在 TCP 或 UNIX 套接字上執行。還要檢查 PHP 是否真的在執行。並查看日誌文件/var/log/php5-fpm.log
或/var/log/php5-fpm/*
和/var/log/nginx/*
(取決於設置)。您應該在那裡找到錯誤的原因。
就我而言,解決方案是:
1-更改像@David這樣的列表:
sudo nano /etc/php/7.0/fpm/pool.d/www.conf
在文件搜尋
listen =
中,註釋 …sock 並添加 127.0.0.1:9000;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000
2- Nginx 站點配置的更改(例如 /etc/nginx/sites-available/mysite.com)
server { . . . location ~ \.php$ { . . . #fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_pass 127.0.0.1:9000; . . .
3-增加超時和max_children:
/etc/php/7.0/fpm/php.ini => default_socket_timeout = 60000 /etc/php/7.0/fpm/php.ini => pm.max_children = 20 /etc/php/7.0/fpm/pool.d/www.conf => request_terminate_timeout = 60000
4- 在 /etc/nginx/nginx.conf 上增加超時:
keepalive_timeout 65000;
重啟 php-fpm 和 nginx 後:
sudo service php7.0-fpm restart sudo service nginx restart
我建議在重啟 nginx 之前測試一切是否正常:
sudo service nginx configtest