Nginx + PHP-FPM = 502 错误网关

Dav*_*vid 5 php nginx php-fpm

我刚刚启动了一个新的 Rackspace 云服务器并运行了以下命令:

apt-get install php5 nginx php-fpm
Run Code Online (Sandbox Code Playgroud)

当我导航到 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;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我创建index.php/srv/www,并开始nginxphp-fpm

/etc/init.d/nginx start
/etc/init.d/php5-fpm start
Run Code Online (Sandbox Code Playgroud)

我收到 502 Bad Gateway 错误。难道我做错了什么?

Jos*_*tes 6

就我而言,解决方案是:

1-像@David一样更改列表:

sudo nano /etc/php/7.0/fpm/pool.d/www.conf
Run Code Online (Sandbox Code Playgroud)

在文件搜索中listen =,注释 ...sock 并添加 127.0.0.1:9000

;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)

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;
       .
       .
       .
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

4-增加 /etc/nginx/nginx.conf 的超时:

keepalive_timeout 65000;
Run Code Online (Sandbox Code Playgroud)

重启 php-fpm 和 nginx 后:

sudo service php7.0-fpm restart
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

我建议在重新启动 nginx 之前测试一下是否一切正常:

sudo service nginx configtest 
Run Code Online (Sandbox Code Playgroud)


小智 5

由于我无法添加评论,我会将其发布为答案...

检查/etc/php5/fpm/pool.d/www.conf(或那里的文件)它是否设置为在 TCP 或 UNIX 套接字上运行。还要检查 PHP 是否实际运行。并查看日志文件/var/log/php5-fpm.log/var/log/php5-fpm/*/var/log/nginx/*(取决于设置)。

您应该在那里找到错误的原因。