Nginx + PHP-FPM = 502 错误网关

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开始nginxphp-fpm

/etc/init.d/nginx start
/etc/init.d/php5-fpm start

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

答案1

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

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

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

答案2

就我而言,解决方案是:

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 

答案3

网关错误意味着 php 进程正在响应错误。您可以检查 php 错误日志吗?还可以尝试将文件 test.php 放置在<?php phpinfo(); ?>@ /srv/www/ 中,然后尝试直接从服务器的命令行访问该域:

curl http://127.0.0.1:9000/test.php;

您是否检查过一些显而易见的东西,例如,您有一个文件 @ /srv/www/index.php?您是否运行过 ps aux 并 grepped nginx 和 php 以确保它们正在运行?

如何运行:netstat -an | grep LISTEN以确保 php-fpm 守护进程正在监听?

答案4

就我而言restart,fpm 服务有效。我只运行了reload。忘记了 conf 更改需要重新启动才能应用。

相关内容