Nginx + PHP-FPM = 502错误的网关

我刚创build一个新的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; } } } 

我在/srv/www创build了index.php ,并启动了nginxphp-fpm

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

我得到一个502错误的网关错误。 难道我做错了什么?

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

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

你应该find错误的原因。

错误的网关错误意味着php进程正在响应一个错误。 你可以检查你的PHP错误日志? 也可以尝试使用<?php phpinfo(); ?>放置一个文件test.php <?php phpinfo(); ?> <?php phpinfo(); ?> @ / srv / www /,然后尝试直接从你的服务器的命令行ala命令:

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

你有没有检查明显的东西,如你有一个文件@ /srv/www/index.php? 你运行ps aux和grepped的nginx和PHP,以确保他们正在运行?

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

在我的情况下,解决scheme是:

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

 sudo nano /etc/php/7.0/fpm/pool.d/www.conf 

在文件中searchlisten = ,comment … sock并添加127.0.0.1:9000

 ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 

2-在Nginx Site的变更(例如/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 

在/etc/nginx/nginx.conf中增加4个超时时间:

 keepalive_timeout 65000; 

重新启动php-fpm和nginx之后:

 sudo service php7.0-fpm restart sudo service nginx restart 

我推荐在重启nginx之前testing一下是否正常:

 sudo service nginx configtest