Php

Nginx + PHP-FPM = 502 錯誤網關

  • December 17, 2020

我剛剛啟動了一個新的 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開始nginxphp-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 

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