Назад | Перейти на главную страницу

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 

Ошибка плохого шлюза означает, что процесс php отвечает с ошибкой. Можете ли вы проверить журнал ошибок PHP? Также попробуйте разместить файл test.php с <?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 чтобы убедиться, что демон php-fpm слушает?