Устранение неполадок установки и настройки Nginx
Nginx – это свободный и открытый веб-сервер, который используется для обслуживания сайтов и приложений любой сложности. Nginx известен своим низким воздействием на память, высокой масштабируемостью и модульной, управляемой событиями архитектурой, которая может обеспечить надежную и предсказуемую производительность. Nginx работает не только как веб-сервер, но и как балансировщик нагрузки, кэширующий HTTP-сервер и обратный прокси-сервер.
Конечно, сначала может быть сложно запомнить все команды и рекомендации по управлению сервером Nginx. Это руководство предназначено для тех, кто работает с Nginx. Оно охватывает некоторые основные команды управления сервисами, а также советы по диагностике и решению некоторых распространенных проблем.
Каждый раздел может использоваться независимо от других, поэтому вы можете пропустить разделы, которые вам не нужны. Все условные значения в командах выделены красным; вместо этих значений вы можете подставить свои данные.
Каждый раздел предлагает ссылки на другие руководства, с которыми можно проконсультироваться.
Примечание: Предполагается, что вы работаете с версией Nginx, установленной из репозитория по умолчанию в Debian-подобном дистрибутиве. Некоторые из команд и директив, описанных в этом руководстве, отсутствуют в других дистрибутивах или в версиях Nginx, установленных из других источников.
Установка Nginx
Обновите индекс пакетов, а затем установите Nginx:
sudo apt-get update
sudo apt-get install nginx
Проверка состояния Nginx
Чтобы проверить состояние веб-сервера на текущей машине, введите:
sudo systemctl status nginx
Автозагрузка Nginx
По умолчанию сервис Nginx запускается автоматически. Если вы хотите изменить это поведение, введите:
sudo systemctl disable nginx
Чтобы снова добавить Nginx в автозагрузку, введите:
sudo systemctl enable nginx
Управление сервисом Nginx
Чтобы остановить сервер Nginx, введите следующую команду:
sudo systemctl stop nginx
Чтобы запустить сервер Nginx, введите:
sudo systemctl start nginx
Чтобы остановить сервис и запустить его снова, введите:
sudo systemctl restart nginx
Если вы изменили конфигурацию, вы можете перезагрузить Nginx в текущей сессии. Введите следующую команду:
sudo systemctl reload nginx
Создание корневого каталога для статического контента
При создании сайтов на Nginx разработчики часто используют виртуальные хосты (или блоки server) – это хосты, которые обслуживают отдельные сайты или домены. Для этого нужно создать document root, каталог верхнего уровня, который Nginx проверяет при обслуживании контента.
Команды в приведенном ниже блоке создадут новый корневой каталог, передадут права на него пользователю sudo и изменят права доступа к каждому подкаталогу в подкаталога в /var/www/.
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
find /var/www -type d -exec chmod 775 <> \;
В данном случае корневой каталог предлагает глобальные права на чтение и исполнение. Чтобы выбрать другие права доступа, замените 775 и укажите требуемые права.
Помните, что права доступа должны меняться в соответствии с ситуацией.
Создание корневого каталога для динамических файлов
Если ваш сайт использует динамические модули типа PHP-FPM, вам может понадобиться передать права на некоторые файлы группе www-data. Если группе нужно право на запись в каталоге, передайте группе права собственности на каталог.
Предложенные ниже команды создают новый document root, передают его группе www-data и изменяют права на каждый подкаталог в /var/www.
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www -type d -exec chmod 775 <> \;
Включение и отключение конфигурационных файлов
Чтобы включить виртуальный хост, нужно создать симлинк из каталога sites-available в каталог sites-enabled, который Nginx читает во время запуска.
Для этого введите комнаду:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
После этого нужно перезагрузить Nginx, чтобы настройки обновились.
Устранение неполадок с хэш-таблицей
Nginx использует хэш-таблицы, чтобы быстро обрабатывать статические данные (имена серверов, MIME-типы). Если вы добавили несколько имен серверов, есть вероятность, что заданного размера хэша имени сервера будет не хватать, и при внесении изменений вы увидите ошибку server_names_hash_bucket_size. Ее можно устранить, отредактировав одно значение в файле /etc/nginx/nginx.conf.
Откройте этот файл:
sudo nano /etc/nginx/nginx.conf
Найдите в файле директиву server_names_hash_bucket_size. Удалите символ #, чтобы раскомментировать строку, и увеличьте значение директивы:
http <
. . .
server_names_hash_bucket_size 64 ;
. . .
>
Это увеличит размер хэш-таблиц имен серверов Nginx и позволит сервису обрабатывать все имена серверов, которые вы добавили. Сохраните и закройте файл, а затем перезапустите Nginx, чтобы обновить настройки.
Тестирование конфигурации
Каждый раз, когда вы вносите изменения в конфигурационные файлы Nginx, обязательно выполните следующую команду, чтобы проверить наличие синтаксических ошибок:
Если в конфигурации есть ошибки, вывод команды укажет, где именно они обнаружены. Если же в конфигурационных файлах нет синтаксических ошибок, вы увидите примерно такой вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если ошибок нет, вы можете перезагрузить сервис:
sudo systemctl restart nginx
Важные файлы и каталоги Nginx
Контент
Каталог /var/www/html хранит весь контент сайта (это корневой каталог сайта). Вы можете изменить стандартные настройки Nginx и указать другие каталоги в var/www.
Конфигурация сервера
- /etc/nginx/: конфигурационный каталог Nginx (здесь хранятся все конфигурационные файлы веб-сервера).
- /etc/nginx/nginx.conf: главный конфигурационный файл веб-сервера, в котором находятся все глобальные параметры.
- /etc/nginx/sites-available/default: виртуальный хост Nginx по умолчанию. Другие виртуальные хосты также должны храниться в каталоге sites-available (но они не будут работать без симлинка в sites-enabled).
- /etc/nginx/sites-enabled/: здесь хранятся файлы включенных виртуальных хостов. При запуске или перезагрузке Nginx читает конфигурационные файлы и ссылки в этом каталоге, чтобы собрать полную конфигурацию.
- /var/log/nginx/access.log: это лог, который регистрирует все запросы Nginx (если в конфигурации веб-сервера не сказано другого).
- /var/log/nginx/error.log: это лог ошибок.
Чтобы получить доступ к логам systemd процесса Nginx, запустите эту команду:
sudo journalctl -u nginx
Заключение
Данный мануал перечислил общие процедуры по поддержке сервера Nginx. Чтобы узнать больше о работе с Nginx, ознакомьтесь со следующими руководствами:
Как настроить Nginx на Ubuntu 20.04
Nginx является одним из самых распространённых инструментов создания веб-серверов, который в настоящее время активно используется для работы многими сайтами. Ниже, о том, как настроить Nginx на сервере Ubuntu 20.04.
Установка Nginx
Прежде чем настроить Nginx, его надо установить. Установку проще всего производить из репозиториев Ubuntu, а значит, для исталляции необходимо войти в систему учётной записью, имеющей привилегию на запуск команды sudo и последовательно выполнить следующие команды:
Первая инструкция выполняет обновление базы данных доступных для установки пакетов. Вторая выполняет установку элементов веб-сервера Nginx.
На этом всё, что касается установки Nginx. Переходим к его настройке.
Настройка веб-сервера Nginx
При настройке веб-сервера Nginx, первым делом следует уделить внимание брандмауэру, используемому операционной системой вашего сервера. Для защиты подключений к вашей системе, с точки зрения простоты использования и надёжности, наиболее оптимально подойдёт такой инструмент как Uncomplicated Firewall (UFW). Чтобы увидеть профили приложений, о которых знает UFW, используйте инструкцию:
Список этих приложений выглядит так:

Чтобы подключаться к Nginx используя HTTP, введите команду:
и проверьте статус UFW:
Должно быть примерно так:

Поскольку веб-сервер устанавливается как служба, проверить статус Nginx можно командой:

Теперь, когда вы убедились в том, что веб-сервер Nginx запущен, можно попробовать подключиться к нему через браузер набрав в нем IP-адрес вашего VPS. Если настройки выполнены корректно, браузер должен вывести такое сообщение:

Важные директории и файлы настроек Nginx
В заключении будет нелишним перечислить наиболее важные в части настройки и проведения анализа работы файлы и папки для настроенного веб-сервера Nginx.
How to verify if nginx is running or not?
Following jsinh’s blog, I installed it using:
I was trying to understand whether it is working or not by using:
However, the output is always the same:

How to verify if nginx is running or not?
![]()
11 Answers 11
Looking at the requirement you have, the below command shall help:
![]()
This is probably system-dependent, but this is the simplest way I’ve found.
That’s the best solution for scripting.
You could use lsof to see what application is listening on port 80:
If you are on mac machine and had installed nginx using
is the command for you. This will return a list of services installed via brew and their corresponding status.

![]()
The modern ( systemctl ) way of doing it:
You can use the exit value in your shell scripts as follows:
![]()
service nginx status will work on a non-systemd based version.
On systemd based versions such as Ubuntu Linux 16.04 LTS and above, make use of the command below;
![]()
For Mac users
I found out one more way: You can check if /usr/local/var/run/nginx.pid exists. If it is — nginx is running. Useful way for scripting.
None of the above answers worked for me so let me share my experience. I am running nginx in a docker container that has a port mapping (hostPort:containerPort) — 80:80 The above answers are giving me strange console output. Only the good old ‘nmap’ is working flawlessly even catching the nginx version. The command working for me is:
We are doing nmap using the -ServiceVersion switch on the localhost and port: 80. It works great for me.