Как устранить эту ошибку с плохим шлюзом на моем локальном веб-сайте NginX?

Я запускаю локальный тестовый сервер на своем ноутбуке под управлением Ubuntu 16.10. Я запускал Apache2, но я решил переключиться на NginX. У меня пять сайтов, один – просто HTML, другие – PHP 7.

Сайт, который является просто HTML, отлично работает. Сайты PHP не работают. Сначала сайты на основе PHP возвращали 403 Forbidden ошибку, как описано в этом вопросе, который я задал ранее .

Однако после некоторых экспериментов и просмотра документации в Интернете, возможно, проблема заключалась в том, что файлы конфигурации NginX для каждого сайта указывали на index.html , а не index.php . Итак, я изменил файлы конфигурации из этого:

 location / { try_files $uri $uri/ /index.html; } 

… к этому:

 location / { try_files $uri $uri/ /index.php; } 

К сожалению, это изменило только ту ошибку, которую я получаю. Теперь, когда я загружаю один из моих сайтов PHP, я получаю ошибку 502 Bad Gateway , и это то, что появляется в /var/log/nginx/error.log :

 2017/01/07 17:28:26 [crit] 6308#6308: *9 connect() to unix:/var/run/php7.0-fpm.sock failed (2: No such file or directory) while connecti ng to upstream, client: 127.0.0.1, server: local_examle.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php7.0-fpm. sock:", host: "local_example.com" 

Я думал, что php7.0-fpm установлен и настроен правильно, но я думаю, что NginX и PHP не работают вместе в моей системе.

Как устранить эту ошибку Bad Gateway и заставить мои PHP-сайты работать на NginX?

Related of "Как устранить эту ошибку с плохим шлюзом на моем локальном веб-сайте NginX?"

Почему вы получаете ошибку в первую очередь

Вы получаете ошибку, потому что nginx – запрос прокси к несуществующей конечной точке. В принципе, он никогда не доходит до PHP. Это то, что нам нужно исправить.

Что говорит нам, что ошибка заключается в следующем:

[crit] 6308#6308: *9 connect() to unix:/var/run/php7.0-fpm.sock

Шаги, которые мы принимаем

  • обеспечение работы php-fpm
  • выяснение, где php-fpm принимает соединения в
  • изменяя конфигурацию nginx, чтобы отразить

Обеспечение работы PHP-FPM

То, что я делаю, это проверка процесса php-fpm в списке процессов. Это говорит мне, началось ли php-fpm .

В терминале введите:

ps aux | grep php

Это показывает вам список php-процессов. Если PHP-FPM не существует, значит, он никогда не запускался, поэтому вы можете запустить его с помощью

sudo service php7.0-fpm start . Я предположил, что имя службы php7.0-fpm .

Если php-fpm IS есть, вы всегда можете посмотреть на дескрипторы файлов, которые он открыл. Сюда входят файлы конфигурации, библиотеки, сетевые подключения и UNIX-сокеты.

Во-первых, вам нужно найти process ID или PID вашего процесса php-fpm . Выход ps aux | grep php ps aux | grep php предоставит вам список, вы хотите посмотреть на процесс, владельцем которого является root ( обычно он говорит, что если вы использовали значения по умолчанию для 16.04).

Где PHP-FPM принимает соединения в

Мы будем перечислять дескрипторы открытых файлов, используя sudo lsof -p 123456 где 123456 – это идентификатор процесса, который вы получили от ps aux | grep php ps aux | grep php .

Прокрутите список вниз, вы ищете «unix» или «tcp», чтобы увидеть, что он делает.

Изменение, где PHP-FPM принимает соединения в

Мы можем изменить указанное значение, или вы можете его сохранить. Причина. Я столкнулся с трудностями, чтобы показать эти несколько полезных команд, чтобы подчеркнуть, что вы всегда можете спросить свою систему, что происходит.

Если вы знаете, где находится конфигурационный файл для вашего пула (обычно /etc/php/7.0/fpm/pool.d/www.conf тогда откройте его и найдите директиву для listen . Измените это или сохраните его, но используйте его в fastcgi_pass nginx стоимость.

Я написал много, но это всего лишь несколько команд, которые вы в конце концов узнаете, если будете продолжать использовать Linux. Это ничего сложного, поэтому я надеюсь, что это не отвлечет вас от этого метода обслуживания PHP. Я бы опубликовал больше информации, но в настоящий момент я не рядом с машиной Linux, поэтому я не выходил за терминальные выходы для примеров. Я сделаю это позже, если вы не найдете этот ответ полезным без него.

Удачи!