Как устранить распространенные проблемы с Nginx на сервере Linux?

В последнее время я довольно часто сталкиваюсь с этим вопросом, поэтому решил составить несколько шагов о том, что делать, если ваш сайт не загружается.

Я бы рекомендовал выполнить следующие действия, если у вас возникли проблемы с сервером nginx и вы не уверены, в чем проблема:

  • Проверьте, запущен ли nginx:

systemctl status nginx

Если nginx запущен, вы должны увидеть что-то вроде этого:

● nginx.service - The nginx HTTP Server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: active (running) since Tue 2019-11-19 09:37:46 UTC; 2 days ago

Docs: https://httpd.nginx.org/docs/2.4/

Если nginx не запущен, результат будет выглядеть так:

● nginx.service - The nginx HTTP Server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: inactive (dead) since Fri 2019-11-22 08:41:01 UTC; 39s ago

Docs: https://httpd.nginx.org/docs/2.4/

Если nginx не запущен, вы можете запустить его с помощью:

systemctl start nginx

Затем проверьте статус еще раз и убедитесь, что nginx продолжает работать.

Если nginx не запускался после перезагрузки, вы можете включить его, чтобы он запускался после следующей перезагрузки:

systemctl enable nginx

Проверьте синтаксис конфигурации nginx:

nginx -t

Если вы получите сообщение об ошибке, вам нужно будет исправить эту проблему, а затем перезапустить nginx:

systemctl restart nginx

Если вы получили команду Syntax OK при запуске nginx -t, значит, ваша конфигурация верна, поэтому я бы рекомендовал проверить журналы ошибок:

tail -f /var/log/nginx/error.log

Проверьте права доступа к файлам и папкам в корне вашего документа:

Найдите пользователя, от имени которого работает ваша служба nginx:

ps auxf | grep nginx

Если вы используете Ubuntu, пользователь должен быть www-data, поэтому вам нужно будет убедиться, что ваши файлы и папки принадлежат этому пользователю, чтобы nginx мог читать и записывать эти файлы:

chown -R www-data:www-data /var/www/site.ru

Проверьте, привязан ли nginx к портам по умолчанию:

netstat -plant | grep '80\|443'

Проверьте, разрешает ли ufw TCP-соединения на портах 80 и 443:

ufw status