nginx поддерживает следующие параметры командной строки:
-
-?|-h— вывод справки
по параметрам командной строки. -
-c— использование альтернативногофайл
конфигурационного файлафайлвместо файла по умолчанию. -
-e— использование альтернативногофайл
лог-файла ошибокфайл
вместо файла по умолчанию (1.19.5).
Специальное значениеstderrвыбирает стандартный файл ошибок. -
-g— заданиедирективы
глобальных директив конфигурации,
напримерnginx -g "pid /var/run/nginx.pid; worker_processes `sysctl -n hw.ncpu`;"
-
-p— задание префикса пути nginx,префикс
т.е. каталога, в котором будут находиться файлы сервера
(по умолчанию — каталог/usr/local/nginx). -
-q— вывод только сообщений об ошибках
при тестировании конфигурации. -
-s— отправка сигналасигнал
главному процессу.
Аргументом сигнал может быть:-
stop— быстрое завершение -
quit— плавное завершение -
reload— перезагрузка конфигурации,
старт нового рабочего процесса с новой конфигурацией,
плавное завершение старых рабочих процессов. -
reopen— переоткрытие лог-файлов
-
-
-t— тестирование конфигурационного файла:
nginx проверяет
синтаксическую правильность конфигурации, а затем пытается открыть файлы,
описанные в конфигурации. -
-T— то же, что и-t,
а также вывод конфигурационных файлов
в стандартный поток вывода (1.9.2). -
-v— вывод версии nginx. -
-V— вывод версии nginx, версии компилятора
и параметров конфигурации сборки.
После того как конфигурационные файлы веб-сервера отредактированы необходимо перезапустить nginx чтобы произошло их повторное считывание.
Перед перезапуском веб-сервера nginx всегда имеет смысл тестировать корректность конфигурационных файлов, при наличии ошибок nginx может не запуститься, что вызовет неработоспособность сайта или сервиса, который обслуживает веб-сервер.
Проверить правильность синтаксиса конфигов можно выполнив следующую команду
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
При положительном результате в выводе будет приведенное выше сообщение или Syntax OK в зависимости от версии пакета. Если найдены ошибки выведутся названия файлов и строки на которых ошибки обнаружены.
Похожим образом тестируется конфигурация Apache (apache2ctl -t)
После тестирования серверу необходимо дать команду на перечитывание конфигов (опция -s обозначает signal, серверу можно отправить множество сигналом, но чаще всего это reload, stop и start)
nginx -s reload
Если ошибки все же есть и конфиги предварительно не тестировались nginx -s reload перезапустит nginx только в случае если к остановке веб-сервера это не приведет, т.е. если серьезных ошибок в конфигурации нет
Чтобы выполнить полную перезагрузку необходимо выполнить
/etc/init.d/nginx restart
Конфигурационные файлы при этом не тестируются. Выполнение команды необходимо при внесении каких-либо существенных изменений когда простого reload недостаточно.
Если Nginx по какой-то причине не останавливается (т.е. после выполнения /etc/init.d/nginx stop в выводе ps aux | grep nginx остаются процессы) процессы требуется завершить вручную, затем запустить Nginx.
Такое бывает если пакет собирался из исходников и для него не написаны инициализационные скрипты.
pkill nginx
/etc/init.d/nginx start
При работе в нагруженных проектах, обслуживающих сайты с посещаемостью в десятки тысяч человек в сутки и более, NGINX конфигурируют специальным образом, что дает максимальную производительность. Для небольших проектов выполнить такие настройки тоже может оказаться полезно.
Nginx произносится как «движок x» — это бесплатный высокопроизводительный HTTP-сервер и обратный прокси-сервер с открытым исходным кодом, отвечающий за обработку нагрузки некоторых из крупнейших сайтов в Интернете. Его можно использовать как автономный веб-сервер и как обратный прокси-сервер для Apache и других веб-серверов.
Если вы разработчик или системный администратор, скорее всего, вы имеете дело с Nginx на регулярной основе.
В этом руководстве мы рассмотрим наиболее важные и часто используемые команды Nginx, включая запуск, остановку и перезапуск Nginx.
Подготовка
Мы предполагаем, что вы вошли в систему как root или пользователь с привилегиями sudo. Команды в этом g должны работать в любом современном дистрибутиве Linux, таком как Ubuntu 18.04, CentOS 8 и Debian 10 .
Запуск Nginx
Запустить Nginx довольно просто. Просто запустите следующую команду:
sudo systemctl start nginx
В случае успеха команда не производит никакого вывода.
Если вы используете дистрибутив Linux без systemd, для запуска Nginx введите:
sudo service start nginx
Вместо того, чтобы вручную запускать службу Nginx, рекомендуется настроить ее запуск при загрузке системы:
sudo systemctl enable nginx
Остановка Nginx
Остановка Nginx быстро завершает все рабочие процессы Nginx, даже если есть открытые соединения.
Чтобы остановить Nginx, выполните одну из следующих команд:
sudo systemctl stop nginxsudo service stop nginx
Перезапуск Nginx
Параметр перезапуска — это быстрый способ остановить, а затем запустить сервер Nginx.
Используйте одну из следующих команд для перезапуска Nginx :
sudo systemctl restart nginxsudo service restart nginx
Это команда, которую вы, вероятно, будете использовать наиболее часто.
Перезагрузка Nginx
Вам необходимо перезагрузить или перезапустить Nginx всякий раз, когда вы вносите изменения в его конфигурацию.
Команда reload загружает новую конфигурацию, запускает новые рабочие процессы с новой конфигурацией и корректно завершает работу старых рабочих процессов.
Чтобы перезагрузить Nginx, используйте одну из следующих команд:
sudo systemctl reload nginxsudo service reload nginx
Тестирование конфигурации Nginx
Всякий раз, когда вы вносите изменения в файл конфигурации сервера Nginx, рекомендуется проверить конфигурацию перед перезапуском или перезагрузкой службы.
Используйте следующую команду, чтобы проверить конфигурацию Nginx на наличие синтаксических или системных ошибок:
sudo nginx -t
Результат будет выглядеть следующим образом:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если есть ошибки, команда выводит подробное сообщение.
Просмотр статуса Nginx
Чтобы проверить статус службы Nginx, используйте следующую команду:
sudo systemctl status nginx
Результат будет выглядеть примерно так:
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-04-21 13:57:01 PDT; 5min ago
Docs: man:nginx(8)
Process: 4491 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 4502 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 4492 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 4504 (nginx)
Tasks: 3 (limit: 2319)
CGroup: /system.slice/nginx.service
|-4504 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
|-4516 nginx: worker process
`-4517 nginx: worker process
Проверка версии Nginx
Иногда вам может потребоваться узнать версию вашего Nginx, чтобы вы могли отладить проблему или определить, доступна ли определенная функция.
Вы можете проверить свою версию Nginx, запустив:
sudo nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
Параметр -V отображает версию Nginx вместе с параметром настройки.
sudo nginx -V
Выводы
В этом руководстве мы показали вам некоторые из наиболее важных команд Nginx. Если вы хотите узнать больше о параметрах командной строки Nginx, посетите документацию Nginx .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
14 января, 2018 11:59 дп
6 574 views
| Комментариев нет
Linux, VPS
Nginx – это свободный и открытый веб-сервер, который используется для обслуживания сайтов и приложений любой сложности. Nginx известен своим низким воздействием на память, высокой масштабируемостью и модульной, управляемой событиями архитектурой, которая может обеспечить надежную и предсказуемую производительность. Nginx работает не только как веб-сервер, но и как балансировщик нагрузки, кэширующий HTTP-сервер и обратный прокси-сервер.
Конечно, сначала может быть сложно запомнить все команды и рекомендации по управлению сервером Nginx. Это руководство предназначено для тех, кто работает с Nginx. Оно охватывает некоторые основные команды управления сервисами, а также советы по диагностике и решению некоторых распространенных проблем.
Каждый раздел может использоваться независимо от других, поэтому вы можете пропустить разделы, которые вам не нужны. Все условные значения в командах выделены красным; вместо этих значений вы можете подставить свои данные.
Каждый раздел предлагает ссылки на другие руководства, с которыми можно проконсультироваться.
Примечание: Предполагается, что вы работаете с версией Nginx, установленной из репозитория по умолчанию в Debian-подобном дистрибутиве. Некоторые из команд и директив, описанных в этом руководстве, отсутствуют в других дистрибутивах или в версиях Nginx, установленных из других источников.
Установка Nginx
Обновите индекс пакетов, а затем установите Nginx:
sudo apt-get update
sudo apt-get install nginx
Читайте также: Установка Nginx в Ubuntu 16.04
Проверка состояния 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
Читайте также: Основы Systemd: управление сервисами и журналирование
Создание корневого каталога для статического контента
При создании сайтов на 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 и укажите требуемые права.
Читайте также: Привилегии в Linux: что это и как с этим работать
Помните, что права доступа должны меняться в соответствии с ситуацией.
Создание корневого каталога для динамических файлов
Если ваш сайт использует динамические модули типа 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 {} ;
Читайте также: Настройка виртуальных хостов Nginx в Ubuntu 16.04
Включение и отключение конфигурационных файлов
Чтобы включить виртуальный хост, нужно создать симлинк из каталога 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, обязательно выполните следующую команду, чтобы проверить наличие синтаксических ошибок:
sudo nginx -t
Если в конфигурации есть ошибки, вывод команды укажет, где именно они обнаружены. Если же в конфигурационных файлах нет синтаксических ошибок, вы увидите примерно такой вывод:
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
- Алгоритмы выбора блоков server и location в Nginx
Tags: NGINX
Nginx произносится как «engine x» — это бесплатный высокопроизводительный HTTP и обратный прокси-сервер с открытым исходным кодом, отвечающий за загрузку некоторых из крупнейших сайтов в Интернете. Он может использоваться как автономный веб-сервер и как обратный прокси-сервер для Apache и других веб-серверов.
Если вы разработчик или системный администратор, скорее всего, вы регулярно работаете с Nginx.
Мы предполагаем, что вы вошли в систему как пользователь root или пользователь с привилегиями sudo. Команды, используемые в этом gsh, должны работать на любом современном дистрибутиве Linux, таком как Ubuntu 18.04 и CentOS 8 и Debian 10 .
Запуск Nginx
Запуск Nginx довольно прост. Просто запустите следующую команду:
sudo systemctl start nginx
В случае успеха команда не выдает никаких результатов.
Если вы используете дистрибутив Linux без systemd для запуска типа Nginx:
sudo service start nginx
Вместо запуска службы Nginx вручную рекомендуется настроить ее запуск при загрузке системы:
sudo systemctl enable nginx
Остановка Nginx
Остановка Nginx быстро завершает работу всех рабочих процессов Nginx, даже если есть открытые соединения.
Чтобы остановить Nginx, выполните одну из следующих команд:
sudo systemctl stop nginxsudo service stop nginx
Перезапуск Nginx
Параметр restart — это быстрый способ остановить и запустить сервер Nginx.
Используйте одну из следующих команд для перезапуска Nginx :
sudo systemctl restart nginxsudo service restart nginx
Это команда, которую вы, вероятно, будете использовать чаще всего.
Перезагрузка конфигов Nginx
Вам необходимо перезагрузить или перезапустить Nginx всякий раз, когда вы вносите изменения в его конфигурацию.
Команда reload загружает новую конфигурацию, запускает новые рабочие процессы с новой конфигурацией и корректно завершает работу старых рабочих процессов.
Чтобы перезагрузить Nginx, используйте одну из следующих команд:
sudo systemctl reload nginxsudo service reload nginx
Тестирование конфигурации Nginx
Всякий раз, когда вы вносите изменения в файл конфигурации сервера Nginx, рекомендуется проверить конфигурацию перед перезапуском или перезагрузкой службы.
Используйте следующую команду для проверки конфигурации Nginx на наличие любых синтаксических или системных ошибок:
sudo nginx -t
Вывод будет выглядеть так:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если есть какие-либо ошибки, команда печатает подробное сообщение.
Просмотр статуса Nginx
Чтобы проверить состояние службы Nginx, используйте следующую команду:
sudo systemctl status nginx
Вывод будет выглядеть примерно так:
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-04-21 13:57:01 PDT; 5min ago
Docs: man:nginx(8)
Process: 4491 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 4502 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 4492 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 4504 (nginx)
Tasks: 3 (limit: 2319)
CGroup: /system.slice/nginx.service
|-4504 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
|-4516 nginx: worker process
`-4517 nginx: worker process
Проверка версии Nginx
Иногда вам может понадобиться узнать версию вашего Nginx, чтобы вы могли отладить проблему или определить, доступна ли определенная функция.
Вы можете проверить свою версию Nginx, запустив:
sudo nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
Опция отображает версию Nginx вместе с возможностью конфигурирования.
-V -
sudo nginx -V
Вывод
В этом руководстве мы показали вам некоторые из наиболее важных команд Nginx. Если вы хотите узнать больше о параметрах командной строки Nginx, посетите документацию Nginx .
После установка NGINX на Ubuntu Linux, либо как веб-сервер, либо обратный прокси-сервер, вам нужно будет изучить основы администрирования службы.
В этом руководстве мы покажем, как проверить статус NGINX в Ubuntu. Это предоставит вам информацию о состоянии службы NGINX, которая поможет вам определить, работает ли она, успешно ли принимает соединения и т. Д. Мы также объясним различные состояния NGINX, чтобы вы знали, что делать с представленной информацией.
В этом уроке вы узнаете:
- Как проверить статус NGINX с помощью systemd
- Как настроить и получить доступ к странице статуса NGINX
- Как проверить конфигурацию NGINX, перезапустить и перезагрузить службу

Проверка статуса NGINX в Ubuntu
| Категория | Требования, условные обозначения или используемая версия программного обеспечения |
|---|---|
| Система | Ubuntu Linux |
| Программного обеспечения | NGINX |
| Другой | Привилегированный доступ к вашей системе Linux с правами root или через судо команда. |
| Условные обозначения |
# — требует данных команды linux для выполнения с привилегиями root либо непосредственно как пользователь root, либо с использованием судо команда$ — требует данных команды linux для выполнения от имени обычного непривилегированного пользователя. |
Проверка статуса NGINX с помощью systemd
Мы можем увидеть, работает ли NGINX в настоящее время, используя следующие systemctl команда.
$ systemctl status nginx.
Есть несколько возможных результатов, которые вы можете увидеть при запуске этой команды. Если служба работает без проблем, она скажет «активен (работает)», как показано на скриншоте ниже.

NGINX активен и работает
Если NGINX не запущен и в последний раз был корректно завершен, вы увидите статус «неактивен (мертв)».

NGINX в настоящее время неактивен
Если в NGINX произошел сбой или произошел сбой, в статусе может быть указано «сбой» с указанием причины сбоя. На скриншоте ниже сервис аварийно завершил работу в результате запуска команда kill, который нам указывает systemd.

Состояние NGINX не удалось из-за полученного сигнала
В случае неправильно сконфигурированного файла NGINX состояние NGINX может указывать на то, что он вообще не мог запуститься.

NGINX указывает, что не удалось запустить из-за неверно настроенного файла конфигурации.
Проверка статуса NGINX на странице статуса
Настройка страницы статуса NGINX может предоставить вам много информации об активных соединениях и другой статистике сервера.
Отредактируйте файл конфигурации вашего сайта NGINX и добавьте следующий блок кода в сервер директива.
местоположение / nginx_status {stub_status on; разрешить 127.0.0.1; все отрицать; }

Настройка страницы статуса NGINX
Это позволит localhost (127.0.0.1) получить доступ к странице example.com/nginx_status чтобы увидеть страницу статуса NGINX.
Результат выглядит так, но будет иметь разные номера в зависимости от количества подключений к вашему серверу.
Активных подключений: 16. сервер принимает обработанные запросы 417 417 610 Чтение: 0 Запись: 3 Ожидание: 5.
Вот подробное описание того, как интерпретировать данные:
- Активные связи: Общее количество открытых и активных подключений к NGINX.
- Три числа в третьей строке:
- Количество принятые соединения
- Количество обработанные соединения (обычно то же самое, что и принятые соединения)
- Общее количество клиентских запросов
- Чтение: Количество текущих подключений, в которых NGINX читает заголовок запроса.
- Пишу: Количество текущих подключений, в которых NGINX пишет ответ клиенту.
- Ожидающий:: Количество открытых соединений, которые неактивны и ждут запросов.

Доступ к странице статуса NGINX
Проверьте конфигурацию NGINX, перезапустите и перезагрузите NGINX.
Теперь, когда вы знаете, как проверять статус NGINX, знание того, как проверять свою конфигурацию на наличие ошибок, также идет рука об руку, наряду с перезапуском и перезагрузкой NGINX.
Используйте следующую команду, чтобы проверить файлы конфигурации NGINX.
$ sudo nginx -t. nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке. nginx: файл конфигурации /etc/nginx/nginx.conf прошел успешно.
И ознакомьтесь с нашим руководством по как перезапустить или перезагрузить NGINX. для объяснения различий.
$ sudo systemctl перезапустить nginx. И. $ sudo systemctl перезагрузить nginx.
Заключительные мысли
В этом руководстве мы увидели, как проверить статус NGINX в Ubuntu Linux. Это включало проверку службы с помощью systemctl, а также настройку и проверку страницы статуса NGINX. Мы также узнали, как проверить нашу конфигурацию NGINX на наличие ошибок и перезапустить или перезагрузить службу. Вся эта информация важна для веб-администраторов и должна помочь вам следить за состоянием вашего веб-сайта или обратного прокси-сервера.
Подпишитесь на новостную рассылку Linux Career Newsletter, чтобы получать последние новости, вакансии, советы по карьере и рекомендуемые руководства по настройке.
LinuxConfig ищет технических писателей, специализирующихся на технологиях GNU / Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU / Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU / Linux.
Ожидается, что при написании статей вы сможете идти в ногу с технологическим прогрессом в вышеупомянутой технической области. Вы будете работать самостоятельно и сможете выпускать как минимум 2 технических статьи в месяц.
-
Что такое nginx
-
Как используется и работает nginx
-
Как проверить, установлен ли NGINX
-
Как установить NGINX
-
Где расположен nginx
-
Как правильно составить правила nginx.conf
-
NGINX WordPress Multisite
-
Как заблокировать по IP в NGINX
-
Как в NGINX указать размер и время
-
Настройка отладки в NGINX
-
Добавление модулей NGINX в Linux (Debian/CentOS/Ubuntu)
-
Основные ошибки nginx и их устранение
-
502 Bad Gateway
-
504 Gateway Time-out
-
Upstream timed out (110: Connection timed out) while reading response header from upstream
-
413 Request Entity Too Large
-
304 Not Modified не устанавливается
-
Client intended to send too large body
-
Как перезагрузить nginx
-
В чём разница между reload и restart
-
Как вместо 404 ошибки делать 301 редирект на главную
-
Как в NGINX сделать редирект на мобильную версию сайта
-
Как в NGINX включить поддержку WebP
-
Полезные материалы и ссылки
-
Настройка NGINX под WP Super Cache
-
Конвертер правил .htaccess (Apache) в NGINX
NGINX — программное обеспечение, написанное для UNIX-систем. Основное назначение — самостоятельный HTTP-сервер, или, как его используют чаще, фронтенд для высоконагруженных проектов. Возможно использование NGINX как почтового SMTP/IMAP/POP3-сервера, а также обратного TCP прокси-сервера.
Как используется и работает nginx
NGINX является широко используемым продуктом в мире IT, по популярности уступая лишь Apache.
Как правило, его используют либо как самостоятельный HTTP-сервер, используя в бекенде PHP-FPM, либо в связке с Apache, где NGINX используется во фронтэнде как кеширующий сервер, принимая на себя основную нагрузку, отдавая статику из кеша, обрабатывая и отфильтровывая входящие запросы от клиента и отправляя их дальше к Apache. Apache работает в бекэнде, работая уже с динамической составляющей проекта, собирая страницу для передачи её в кеш NGINX и запрашивающему её клиенту. Это если в общих чертах, чтобы понимать суть работы, так-то внутри всё сложнее.
Как проверить, установлен ли NGINX
Пишете в консоль SSH следующую команду, она покажет версию NGINX
nginx -v
Если видите что-то навроде
nginx version: nginx/1.10.3
Значит, всё в порядке, установлен NGINX версии 1.10.3. Если нет, установим его.
Как установить NGINX
Если вы сидите не под
root, предваряйте командыapt-getпрефиксомsudo, напримерsudo apt-get install nginx
- Обновляем порты (не обязательно)
apt-get update && apt-get upgrade
- Установка NGINX
apt-get install nginx
- Проверим, установлен ли NGINX
nginx -v
Команда должна показать версию сервера, что-то подобное:
nginx version: nginx/1.10.3
Где расположен nginx
Во FreeBSD NGINX располагается в /usr/local/etc/nginx.
В Ubuntu, Debian NGINX располагается тут: /etc/nginx. В ней располагается конфигурационный файл nginx.conf — основной конфигурационный файл nginx.
Чтобы добраться до него, выполняем команду в консоли
nano /etc/nginx/nginx.conf
По умолчанию, файлы конфигураций конкретных сайтов располагаются в /etc/nginx/sites-enabled/
cd /etc/nginx/sites-enabled/
или в /etc/nginx/vhosts/
cd /etc/nginx/vhosts/
Как правильно составить правила nginx.conf
Идём изучать мануалы на официальный сайт.
Пример рабочей конфигурации NGINX в роли кеширующего проксирующего сервера с Apache в бекенде
# Определяем пользователя, под которым работает nginx
user www-data;
# Определяем количество рабочих процессов автоматически
# Параметр auto поддерживается только начиная с версий 1.3.8 и 1.2.5.
worker_processes auto;
# Определяем, куда писать лог ошибок и уровень логирования
error_log /var/log/nginx/error.log warn;
# Задаём файл, в котором будет храниться номер (PID) основного процесса
pid /var/run/nginx.pid;
events {
# Устанавливает максимальное количество соединений одного рабочего процесса. Следует выбирать значения от 1024 до 4096.
# Как правило, число устанавливают в зависимости от числа ядер процессора по принципу n * 1024. Например, 2 ядра дадут worker_connections 2048.
worker_connections 1024;
# Метод обработки соединений. Наличие того или иного метода определяется платформой.
# Как правило, NGINX сам умеет определять оптимальный метод, однако, его можно указать явно.
# use epoll - используется в Linux 2.6+
# use kqueue - FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 и Mac OS X
use epoll;
# Будет принимать максимально возможное количество соединений
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# Куда писать лог доступа и уровень логирования
access_log /var/log/nginx/access.log main;
# Для нормального ответа 304 Not Modified;
if_modified_since before;
# Включаем поддержку WebP
map $http_accept $webp_ext {
default "";
"~*webp" ".webp";
}
##
# Basic Settings
##
# Используется, если количество имен серверов большое
#server_names_hash_max_size 1200;
#server_names_hash_bucket_size 64;
### Обработка запросов ###
# Метод отправки данных sendfile более эффективен, чем стандартный метод read+write
sendfile on;
# Будет отправлять заголовки и и начало файла в одном пакете
tcp_nopush on;
tcp_nodelay on;
### Информация о файлах ###
# Максимальное количество файлов, информация о которых будет содержаться в кеше
open_file_cache max=200000 inactive=20s;
# Через какое время информация будет удалена из кеша
open_file_cache_valid 30s;
# Кеширование информации о тех файлах, которые были использованы хотя бы 2 раза
open_file_cache_min_uses 2;
# Кеширование информации об отсутствующих файлах
open_file_cache_errors on;
# Удаляем информацию об nginx в headers
server_tokens off;
# Будет ждать 30 секунд перед закрытием keepalive соединения
keepalive_timeout 30s;
## Максимальное количество keepalive запросов от одного клиента
keepalive_requests 100;
# Разрешает или запрещает сброс соединений по таймауту
reset_timedout_connection on;
# Будет ждать 30 секунд тело запроса от клиента, после чего сбросит соединение
client_body_timeout 30s;
# В этом случае сервер не будет принимать запросы размером более 200Мб
client_max_body_size 200m;
# Если клиент прекратит чтение ответа, Nginx подождет 30 секунд и сбросит соединение
send_timeout 30s;
# Proxy #
# Задаёт таймаут для установления соединения с проксированным сервером.
# Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
proxy_connect_timeout 30s;
# Задаёт таймаут при передаче запроса проксированному серверу.
# Таймаут устанавливается не на всю передачу запроса, а только между двумя операциями записи.
# Если по истечении этого времени проксируемый сервер не примет новых данных, соединение закрывается.
proxy_send_timeout 30s;
# Задаёт таймаут при чтении ответа проксированного сервера.
# Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями чтения.
# Если по истечении этого времени проксируемый сервер ничего не передаст, соединение закрывается.
proxy_read_timeout 30s;
##
# Gzip Settings
##
# Включаем сжатие gzip
gzip on;
# Для IE6 отключить
gzip_disable "msie6";
# Добавляет Vary: Accept-Encoding в Headers
gzip_vary on;
# Cжатие для всех проксированных запросов (для работы NGINX+Apache)
gzip_proxied any;
# Устанавливает степень сжатия ответа методом gzip. Допустимые значения находятся в диапазоне от 1 до 9
gzip_comp_level 6;
# Задаёт число и размер буферов, в которые будет сжиматься ответ
gzip_buffers 16 8k;
# Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа. Значение по умолчанию
gzip_http_version 1.1;
# MIME-типы файлов в дополнение к text/html, которые нужно сжимать
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
# Минимальная длина файла, которую нужно сжимать
gzip_min_length 10;
# Подключаем конфиги конкретных сайтов
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/vhosts/*/*;
### Далее определяем localhost
### Сюда отправляются запросы, для которых не был найден свой конкретный блок server в /vhosts/
server {
server_name localhost; # Тут можно ввести IP сервера
disable_symlinks if_not_owner;
listen 80 default_server; # Указываем, что это сервер по умолчанию на порту 80
### Возможно, понадобится чётко указать IP сервера
# listen 192.168.1.1:80 default_server;
### Можно сбрасывать соединения с сервером по умолчанию, а не отправлять запросы в бекенд
#return 444;
include /etc/nginx/vhosts-includes/*.conf;
location @fallback {
error_log /dev/null crit;
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off ;
}
}
}
Строка include /etc/nginx/vhosts/*; указывает на поддиректорию vhosts, в которой содержатся файлы конфигураций конкретно под каждый домен.
Пример того, что может содержаться там — example.com.conf
Ниже пример для Apache в бекенде:
server {
# Домен сайта и его алиасы через пробел
server_name example.com www.example.com;
# Кодировка сайта. Содержимое заголовка "Content-Type". off отключает этот заголовок. Можно указать стандартные uft-8, windows-1251, koi8-r, либо же использовать свою.
charset off;
disable_symlinks if_not_owner from=$root_path;
index index.html;
root $root_path;
set $root_path /var/www/example/data/www/example.com;
access_log /var/www/httpd-logs/example.com.access.log ;
error_log /var/www/httpd-logs/example.com.error.log notice;
#IP:Port сервера NGINX
listen 192.168.1.1:80;
include /etc/nginx/vhosts-includes/*.conf;
location / {
location ~ [^/].ph(pd*|tml)$ {
try_files /does_not_exists @fallback;
}
# WebP
location ~* ^.+.(png|jpe?g)$ {
expires 365d;
add_header Vary Accept;
try_files $uri$webp_ext $uri =404;
}
location ~* ^.+.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 365d;
try_files $uri =404;
}
location / {
try_files /does_not_exists @fallback;
}
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off ;
}
}
А вот вариант для PHP-FPM:
server {
# Домен сайта и его алиасы через пробел
server_name example.com www.example.com;
# Кодировка сайта. Содержимое заголовка "Content-Type". off отключает этот заголовок. Можно указать стандартные uft-8, windows-1251, koi8-r, либо же использовать свою.
charset off;
disable_symlinks if_not_owner from=$root_path;
index index.html;
root $root_path;
set $root_path /var/www/example/data/www/example.com;
access_log /var/www/httpd-logs/example.com.access.log ;
error_log /var/www/httpd-logs/example.com.error.log notice;
#IP:Port сервера NGINX
listen 192.168.1.1:80;
include /etc/nginx/vhosts-includes/*.conf;
location / {
location ~ [^/].ph(pd*|tml)$ {
try_files /does_not_exists @php;
}
# WebP
location ~* ^.+.(png|jpe?g)$ {
expires 365d;
add_header Vary Accept;
try_files $uri$webp_ext $uri =404;
}
location ~* ^.+.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 365d;
try_files $uri =404;
}
location / {
try_files $uri $uri/ @php;
}
}
location @php {
try_files $uri =404;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
# Путь к сокету php-fpm сайта
fastcgi_pass unix:/var/www/php-fpm/example.sock;
fastcgi_split_path_info ^((?U).+.ph(?:pd*|tml))(/?.+)$;
}
}
NGINX WordPress Multisite
Ниже конфигурация под WordPress Multisite с сайтами в поддиректориях:
#user 'example' virtual host 'example.com' configuration file
server {
server_name example.com www.example.com;
charset off;
disable_symlinks if_not_owner from=$root_path;
index index.html index.php;
root $root_path;
set $root_path /var/www/example/data/www/example.com;
access_log /var/www/httpd-logs/example.com.access.log ;
error_log /var/www/httpd-logs/example.com.error.log notice;
listen 1.2.3.4:80;
include /etc/nginx/vhosts-includes/*.conf;
# А вот тут блок специально для MU subdirectories
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*.php) $2 last;
}
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ .php {
try_files $uri =404;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
fastcgi_pass unix:/var/www/php-fpm/example.sock;
fastcgi_split_path_info ^((?U).+.ph(?:pd*|tml))(/?.+)$;
}
}
Как заблокировать по IP в NGINX
Блокировать можно с помощью директив allow и deny.
Правила обработки таковы, что поиск идёт сверху вниз. Если IP совпадает с одним из правил, поиск прекращается.
Таким образом, вы можете как забанить все IP, кроме своих, так и заблокировать определённый IP:
deny 1.2.3.4 ; # Здесь мы вводим IP нарушителя deny 192.168.1.1/23 ; # А это пример того, как можно добавить подсеть в бан deny 2001:0db8::/32 ; # Пример заблокированного IPv6 allow all ; # Всем остальным разрешаем доступ
Приведу пример конфигурации, как можно закрыть доступ к панели администратора WordPress по IP:
### https://sheensay.ru/?p=408
################################
location = /wp-admin/admin-ajax.php { # Открываем доступ к admin-ajax.php. Это нужно, чтобы проходили ajax запросы в WordPress
try_files $uri/ @php ;
}
location = /adminer.php { # Закрываем Adminer, если он есть
try_files /does_not_exists @deny ;
}
location = /wp-login.php { # Закрываем /wp-login.php
try_files /does_not_exists @deny ;
}
location ~* /wp-admin/.+.php$ { # Закрываем каталог /wp-admin/
try_files /does_not_exists @deny ;
}
location @deny { # В этом location мы определяем правила, какие IP пропускать, а какие забанить
allow 1.2.3.4 ; # Здесь мы вводим свой IP из белого списка
allow 192.168.1.1/23 ; # А это пример того, как можно добавить подсеть IP
allow 2001:0db8::/32 ; # Пример IPv6
deny all ; # Закрываем доступ всем, кто не попал в белый список
try_files /does_not_exists @php; # Отправляем на обработку php в бекенд
}
location ~ .php$ { ### Файлы PHP обрабатываем в location @php
try_files /does_not_exist @php;
}
location @php{
### Обработчик php, PHP-FPM или Apache
}
Ещё один неплохой вариант. Правда, по умолчанию определяются только статичные IP. А чтобы разрешить подсеть, придётся использовать дополнительный модуль GEO:
### Задаём таблицу соответсткий
map $remote_addr $allowed_ip {
### Перечисляете разрешённые IP
1.2.3.4 1; ### 1.2.3.4 - это разрешённый IP
4.3.2.1 1; ### 4.3.2.1 - это ещё один разрешённый IP
default 0; ### По умолчанию, запрещаем доступ
}
server {
### Объявляем переменную, по которой будем проводить проверку доступа
set $check '';
### Если IP не входит в список разрешённых, отмечаем это
if ( $allowed_ip = 0 ) {
set $check "A";
}
### Если доступ идёт к wp-login.php, отмечаем это
if ( $request_uri ~ ^/wp-login.php ) {
set $check "${check}B";
}
### Если совпали правила запрета доступа - отправляем соответствующий заголовок ответа
if ( $check = "AB" ) {
return 444; ### Вместо 444 можно использовать стандартный 403 Forbidden, чтобы отслеживать попытки доступа в логах
### Остальные правила server ####
}
Как в NGINX указать размер и время
Размеры:
- Байты указываются без суффикса. Пример:
directio_alignment 512;
- Килобайты указываются с суффиксом
kилиK. Пример:client_header_buffer_size 1k;
- Мегабайты указываются с суффиксом
mилиM. Пример:client_max_body_size 100M;
- Гигабайты указываются с суффиксом
gилиG. Пример:client_max_body_size 1G;
Время задаётся в следующих суффиксах:
ms— миллисекундыs— секундыm— минутыh— часыd— дниw— неделиM— месяцы, 30 днейY— годы, 365 дней
В одном значении можно комбинировать различные единицы, указывая их в порядке от более к менее значащим, и по желанию отделяя их пробелами. Например, 1h 30m задаёт то же время, что и 90m или 5400s. Значение без суффикса задаёт секунды.
Рекомендуется всегда указывать суффикс
Некоторые интервалы времени можно задать лишь с точностью до секунд.
Настройка отладки в NGINX
В целях отладки настройки NGINX вы можете писать данные в логи, но я советую воспользоваться директивой add_header. С её помощью вы можете выводить различные данные в http headers.
Пример, как можно определить, в каком location обрабатывается правило:
location ~ [^/].ph(pd*|tml)$ {
try_files /does_not_exists @fallback;
add_header X-debug-message "This is php" always;
}
location ~* ^.+.(jpe?g|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 365d; log_not_found off; access_log off;
try_files $uri $uri/ @fallback;
add_header X-debug-message "This is static file" always;
}
Теперь, если проверить, какие заголовки отдаёт статичный файл, например https://sheensay.ru/wp-content/uploads/2015/06/nginx.png, то вы увидите среди них и наш X-debug-message

Отладочная информация NGINX в заголовках HTTP headers
Вместо статичной строки можно выводить данные различных переменных, что очень удобно для правильной настройки сервера и поиска узких мест.
Добавление модулей NGINX в Linux (Debian/CentOS/Ubuntu)
Функционал NGINX возможно расширить с помощью модулей. С их списком и возможным функционалом можно ознакомиться на официальном сайте http://nginx.org/ru/docs/. Также, существуют интересные сторонние модули, например, модуль NGINX для защиты от DDoS
Приведу пример установки модуля ngx_headers_more.
Все команды выполняются в консоли, используйте Putty или Far Manager с NetBox/WinSCP. Установка будет происходить под Debian
-
nginx -V
В результате увидите что-то навроде
nginx version: nginx/1.8.0 built by gcc 4.9.1 (Debian 4.9.1-19) built with OpenSSL 1.0.1k 8 Jan 2015 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/etc/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/ngin x/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/p roxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=ng inx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-htt p_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-htt p_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_spdy_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-securi ty' --with-ld-opt=-Wl,-z,relro --with-ipv6
Результат запишем в блокнот, пригодится при компиляции
-
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar xvf nginx-1.8.0.tar.gz
rm -rf nginx-1.8.0.tar.gz
cd nginx-1.8.0
Тут мы скачиваем нужную версию NGINX.
-
wget https://github.com/openresty/headers-more-nginx-module/archive/v0.29.tar.gz
tar xvf v0.29.tar.gz
Скачиваем и распаковываем последнюю версию модуля из источника, в моём случае, с GitHub
-
aptitude install build-essential
Установим дополнительные пакеты.
Если выходит ошибкаaptitude: команда не найдена, нужно предварительно установить aptitude:apt-get install aptitude
- Теперь приступаем к конфигурированию NGINX с модулем
headers-more-nginx-module
Ещё раз запускаемnginx -Vи копируем, начиная с —prefix= и до первого —add-module= (все присутствующие в результате —add_module= нам не нужны). После чего пишем в консоли ./configure и вставляем скопированное из редактора:./configure --prefix=/etc/nginx --sbin-path=/etc/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_spdy_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security' --with-ld-opt=-Wl,-z,relro --with-ipv6 --add-module=./headers-more-nginx-module-0.29
—add-module={Тут надо добавить путь до распакованного модуля, абсолютный или относительный}
- Во время конфигурирования могут возникнуть ошибки
- Ошибка
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option.
Эта проблема решается установкой
libpcre++-dev:aptitude install libpcre++-dev
- Ошибка
./configure: error: SSL modules require the OpenSSL library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-openssl=<path> option.
Эта проблема решается так:
aptitude install libssl-dev
- Ошибка
- В случае успеха, вы увидите что-то навроде
Configuration summary + using system PCRE library + using system OpenSSL library + md5: using OpenSSL library + sha1: using OpenSSL library + using system zlib library nginx path prefix: "/etc/nginx" nginx binary file: "/etc/nginx/sbin/nginx" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/cache/nginx/client_temp" nginx http proxy temporary files: "/var/cache/nginx/proxy_temp" nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp" nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp" nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
- Пришло время собрать бинарный файл nginx
make install clean
- Теперь нужно проверить, собрался ли бинарник с нужным модулем.
/usr/sbin/nginx -V
В результате должны увидеть модуль на месте
nginx version: nginx/1.8.0 built by gcc 4.9.2 (Debian 4.9.2-10) built with OpenSSL 1.0.1k 8 Jan 2015 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/etc/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_spdy_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security' --with-ld-opt=-Wl,-z,relro --with-ipv6 --add-module=./headers-more-nginx-module-0.29
- Останавливаем nginx
service nginx stop
- Сделаем бекап текущего бинарника nginx на всякий случай, чтобы откатить его назад при необходимости
mv /usr/sbin/nginx /usr/sbin/nginx_back
- Свежесобранный бинарник nginx ставим на место старого
mv /etc/nginx/sbin/nginx /usr/sbin/nginx
- Проверяем, что вышло в итоге, что ничего не перепутано, и нужные модули на месте
nginx -V
- Запускаем NGINX
service nginx start
- Подчищаем за собой
cd ../
rm -rf nginx-1.8.0
rm -rf /etc/nginx/sbin
Основные ошибки nginx и их устранение
502 Bad Gateway
Ошибка означает, что NGINX не может получить ответ от одного из сервисов на сервере. Довольно часто эта ошибка появляется, когда NGINX работает в связке с Apache, Varnish, Memcached или иным сервисом, а также обрабатывает запросы PHP-FPM.
Как правило, проблема возникает из-за отключенного сервиса (в этом случае нужно проверить состояние напарника и при необходимости перезапустить его) либо, если они находятся на разных серверах, проверить пинг между ними, так как, возможно, отсутствует связь между ними.
Также, для PHP-FPM нужно проверить права доступа к сокету.
Для этого убедитесь, что в /etc/php-fpm.d/www.conf прописаны правильные права
listen = /tmp/php5-fpm.sock listen.group = www-data listen.owner = www-data
504 Gateway Time-out
Ошибка означает, что nginx долгое время не может получить ответ от какого-то сервиса. Такое происходит, если Apache, с которым NGINX работает в связке, отдаёт ответ слишком медленно.
Проблему можно устранить с помощью увеличения времени таймаута.
При работе в связке NGINX+Apache в конфигурационный файл можно внести изменения:
server {
...
send_timeout 800;
proxy_send_timeout 800;
proxy_connect_timeout 800;
proxy_read_timeout 800;
...
}
Тут мы выставили ожидание таймаута в 800 секунд.
Upstream timed out (110: Connection timed out) while reading response header from upstream
Причиной может быть сложная и потому долгая обработка php в работе PHP-FPM.
Здесь тоже можно увеличить время ожидания таймаута
location ~ .php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_read_timeout 800;
}
800 секунд на ожидание ответа от бекенда.
Это лишь временные меры, так как при увеличении нагрузки на сайт ошибка снова станет появляться. Устраните узкие места, оптимизируйте работу скриптов php
413 Request Entity Too Large
Ошибка означает, что вы пытались загрузить слишком большой файл. В настройках nginx по умолчанию стоит ограничение в 1Mb.
Для устранения ошибки в nginx.conf нужно найти строку
client_max_body_size 1m;
и заменить значение на нужное. Например, мы увеличим размер загружаемых файлов до 100Mb
client_max_body_size 100m;
Также, можно отключить проверку размера тела ответа полностью значением ноль:
client_max_body_size 0;
Следует помнить, зачем ввели это ограничение: если любой пользователь может загружать файлы на неподготовленный сайт, можно сравнительно легко провести DDOS-атаку на него, перегружая входной поток большими файлами.
После каждого внесённого изменения в конфигурационный файл необходимо перезагружать nginx
304 Not Modified не устанавливается
Если возникает проблема с правильным отображением ответного заголовка сервера 304 Not Modified, то проблема, скорее всего, в пунктах:
- В секции
serverконкретного сайта включенssi on(Подробнее в документации). По умолчанию, ssi отключен, но некоторые хостеры и ISPManager любят его прописывать в дефолтную конфигурацию сайта включенным. Его нужно обязательно отключить, закомментировав или удалив эту строку; - if_modified_since установить в
before, то есть на уровнеhttpили конкретногоserverпрописать:if_modified_since before;
Правильность ответа
304 Not Modifiedможно проверить с помощью:
- Консоли разработчика браузера (F12) в разделе
Network (Cеть)(не забываем перезагружать страницу);
![]()
- Или сторонних сервисов, например last-modified.com.
Client intended to send too large body
Решается с помощью увеличения параметра client_max_body_size
client_max_body_size 200m;
Как перезагрузить nginx
Для перезагрузки NGINX используйте restart или reload.
Команда в консоли:
service nginx reload
либо
/etc/init.d/nginx reload
либо
nginx -s reload
Эти команды остановят и перезапустят сервер NGINX.
Перезагрузить конфигурационный файл без перезагрузки NGINX можно так:
nginx -s reload
Проверить правильность конфигурации можно командой
nginx -t
В чём разница между reload и restart
Как происходит перезагрузка в NGINX:
- Команда посылается серверу
- Сервер анализирует конфигурационный файл
- Если конфигурация не содержит ошибок, новые процессы открываются с новой конфигурацией сервера, а старые плавно прекращают свою работу
- Если конфигурация содержит ошибки, то при использовании
restartпроцесс перезагрузки сервера прерывается, сервер не запускаетсяreloadсервер откатывается назад к старой конфигурации, работа продолжается
Короче говоря, restart обрывает работу резко, reload делает это плавно.
Restart рекомендуется использовать, только когда внесены глобальные изменения, например, заменено ядро сервера, либо нужно увидеть результат внесённых изменений прямо здесь и сейчас. В остальных случаях используйте reload.
Ещё лучше, если вы будете предварительно проверять правильность конфигурации командой nginx -t, например:
nginx -t && service nginx reload
или
nginx -t && nginx -s reload
Как вместо 404 ошибки делать 301 редирект на главную
error_page 404 = @gotomain;
location @gotomain {
return 301 /;
}
Как в NGINX сделать редирект на мобильную версию сайта
Данный код вставляется на уровне server в самое начало файла (не обязательно в самое начало, но главное, чтобы перед определением обработчика скриптов php, иначе редирект может не сработать).
### Устанавливаем переменную в 0. В неё пишем 1, если обнаружили мобильную версию браузера
set $mobile_rewrite 0;
if ($http_user_agent ~* "(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino") {
set $mobile_rewrite 1;
}
if ($http_user_agent ~* "^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-)") {
set $mobile_rewrite 1;
}
### Мобильный барузер обнаружен, редиректим на мобильный поддомен, в моём случае, m.example.com
if ($mobile_rewrite = 1) {
rewrite ^ http://m.example.com/$request_uri redirect;
break;
}
Как в NGINX включить поддержку WebP
Чтобы включить поддержку WebP, нужно прописать в секции http:
# Прописываем маппинг для WebP, если он поддерживается браузером
map $http_accept $webp_ext {
default "";
"~*webp" ".webp";
}
Теперь, в секции server можно использовать:
location ~* ^.+.(png|jpe?g)$ {
expires 365d; # Включаем браузерный кеш на год для изображений
add_header Vary Accept; # Даём заголовок, что акцептируем запрос
try_files $uri$webp_ext $uri =404; # Пробуем сначала искать версию изображения .webp
}
Полезные материалы и ссылки
Настройка NGINX под WP Super Cache
Конвертер правил .htaccess (Apache) в NGINX
Весьма полезный сервис, который поможет cконвертировать правила из .htaccess в NGINX. Результат, возможно, придётся донастроить вручную, но, в целом, он весьма удобен в применении.
Вот как описывают сервис сами авторы:
Сервис предназначен для перевода конфигурационного файла Apache .htaccess в инструкции конфигурационного файла nginx.
В первую очередь, сервис задумывался как переводчик инструкций mod_rewrite с htaccess на nginx. Однако, он позволяет переводить другие инструкции, которые можно и резонно перевести из Apache в nginx.
Инструкции, не относящиеся к настройке сервера (например, php_value), игнорируются.
Переводчик не проверяет правильность входящего конфига, в том числе регулярные выражения и логические ошибки.
Результат перевода следует обязательно проверить вручную, а затем разместить в секции server {} конфигурационного файла nginx.
Замечания и предложения по улучшению ждем, как обычно, на [email protected] 😉
Перейти в конвертер из .htaccess Apache в NGINX
Загрузка…
Nginx произносится как «engine x» – это бесплатный высокопроизводительный HTTP и обратный прокси-сервер с открытым исходным кодом, отвечающий за загрузку некоторых из крупнейших сайтов в Интернете. Он может использоваться как автономный веб-сервер и как обратный прокси-сервер для Apache и других веб-серверов.
Если вы разработчик или системный администратор, скорее всего, вы имеете дело с Nginx на регулярной основе.
В этой статье мы рассмотрим наиболее важные и часто используемые команды Nginx, включая запуск, остановку и перезапуск Nginx.
Все команды должны быть выполнены от имени пользователя sudo или root и должны работать в любом современном дистрибутиве Linux, таком как Ubuntu 18.04 и CentOS 7 и Debian 9.
Запуск Nginx довольно прост. Просто запустите следующую команду:
sudo systemctl start nginx
В случае успеха команда не выдает никаких результатов.
Если вы используете дистрибутив Linux без systemd для запуска типа Nginx:
sudo service start nginx
Вместо того, чтобы вручную запускать службу Nginx, рекомендуется настроить ее на запуск при загрузке системы:
sudo systemctl enable nginx
Stop Nginx быстро остановит все рабочие процессы Nginx, даже если есть открытые соединения.
Чтобы остановить Nginx, выполните одну из следующих команд:
sudo systemctl stop nginx sudo service stop nginx
Параметр restart – это быстрый способ остановить и запустить сервер Nginx.
Используйте одну из следующих команд для перезапуска Nginx:
sudo systemctl restart nginx sudo service restart nginx
Это команда, которую вы, вероятно, будете использовать чаще всего.
Вам необходимо перезапустить Nginx всякий раз, когда вы вносите изменения в его конфигурацию.
Опция перезагрузки загрузит новую конфигурацию, запустит новые рабочие процессы с новой конфигурацией и корректно завершит работу старых рабочих процессов.
Чтобы перезагрузить Nginx, используйте одну из следующих команд:
sudo systemctl reload nginx sudo service reload nginx
Всякий раз, когда вы вносите изменения в файл конфигурации сервера Nginx, рекомендуется проверить конфигурацию перед перезапуском или перезагрузкой службы.
Используйте следующую команду для проверки конфигурации Nginx на наличие любых синтаксических или системных ошибок:
sudo nginx -t
Вывод будет выглядеть примерно так.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Если есть какие-либо ошибки, команда напечатает подробное сообщение.
Чтобы проверить состояние службы Nginx, используйте следующую команду:
sudo systemctl status nginx
Вывод будет выглядеть примерно так:
* nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/nginx.service.d
`-nofile.conf
Active: active (running) since Mon 2019-04-22 10:21:22 MSK; 10h ago
Docs: http://nginx.org/en/docs/
Process: 1113 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 1183 (nginx)
Tasks: 4
Memory: 63.1M
CPU: 3min 31.529s
CGroup: /system.slice/nginx.service
|-1183 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
|-1184 nginx: worker process
|-1185 nginx: worker process
`-1186 nginx: worker processs
Иногда вам может понадобиться узнать версию вашего Nginx, чтобы вы могли отладить проблему или определить, доступна ли определенная функция.
Вы можете проверить свою версию Nginx, запустив:
sudo nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
Вариант -V будет выводить версию Nginx вместе с возможностью конфигурирования.
sudo nginx -V
В этой статье мы показали вам некоторые из наиболее важных команд Nginx. Если вы хотите узнать больше о командной строке Nginx, посетите документацию Nginx
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Nginx (pronounced Engine x) is a free, open-source, high-performance, scalable, reliable, full-featured and popular HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.
Nginx is well known for its simple configuration, and low resource consumption due to its high performance, it is being used to power several high-traffic sites on the web, such as GitHub, SoundCloud, Dropbox, Netflix, WordPress and many others.
Read Also: 3 Useful Hacks Every Linux User Must Know
In this guide, we will explain some of the most commonly used Nginx service management commands that, as a developer or system administrator, you should keep at your fingertips. We will show commands for both Systemd and SysVinit.
All of these following list of Nginx popular commands must be executed as a root or sudo user and should work on any modern Linux distribution such as CentOS, RHEL, Debian, Ubuntu and Fedora.
Install Nginx Server
To install Nginx web server, use your default distribution package manager as shown.
$ sudo yum install epel-release && yum install nginx [On CentOS/RHEL] $ sudo dnf install nginx [On Fedora] $ sudo apt install nginx [On Debian/Ubuntu]
Check Nginx Version
To check the version of Nginx web server installed on your Linux system, run the following command.
$ nginx -v nginx version: nginx/1.12.2
The above command simply displays the version number. If you want to view version and configure options then use the -V flag as shown.
$ nginx -V
Show Nginx, Compiler and Configuration Parameters
nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
Check Nginx Configuration Syntax
Before you actually start the Nginx service, you can check whether its configuration syntax is correct. This is especially useful if you have made changes or added a new configuration to the existing configuration structure.
To test the Nginx configuration, run the following command.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
You can test the Nginx configuration, dump it and exit using the -T flag as shown.
$ sudo nginx -T
Show Nginx Configuration Settings
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
....
Start Nginx Service
To start the Nginx service, run the following command. Note that this process may fail if the configuration syntax is not OK.
$ sudo systemctl start nginx #systemd OR $ sudo service nginx start #sysvinit
Enable Nginx Service
The previous command only starts the service for the meantime, to enable it auto-start at boot time, run the following command.
$ sudo systemctl enable nginx #systemd OR $ sudo service nginx enable #sysv init
Restart Nginx Service
To restart the Nginx service, an action which will stop and then start the service.
$ sudo systemctl restart nginx #systemd OR $ sudo service nginx restart #sysv init
View Nginx Service Status
You can check the Nginx service’s status as follows. This command shows the run time status information about the service.
$ sudo systemctl status nginx #systemd OR $ sudo service nginx status #sysvinit
Show Nginx Status Information
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[[email protected] ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-03-05 05:27:15 EST; 2min 59s ago
Main PID: 31515 (nginx)
CGroup: /system.slice/nginx.service
├─31515 nginx: master process /usr/sbin/nginx
└─31516 nginx: worker process
Mar 05 05:27:15 tecmint.com systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 05 05:27:15 tecmint.com nginx[31509]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 05 05:27:15 tecmint.com nginx[31509]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 05 05:27:15 tecmint.com systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
Mar 05 05:27:15 tecmint.com systemd[1]: Started The nginx HTTP and reverse proxy server.
Reload Nginx Service
To tell Nginx to reload its configuration, use the following command.
$ sudo systemctl reload nginx #systemd OR $ sudo service nginx reload #sysvinit
Stop Nginx Service
If you want to stop the Nginx service for once reason or the other, use the following command.
$ sudo systemctl stop nginx #systemd OR $ sudo service nginx stop #sysvinit
Show Nginx Command Help
To get an easy reference guide of all Nginx commands and options, use following command.
$ systemctl -h nginx
Nginx Help Commands and Options
systemctl [OPTIONS...] {COMMAND} ...
Query or send control commands to the systemd manager.
-h --help Show this help
--version Show package version
--system Connect to system manager
-H --host=[[email protected]]HOST
Operate on remote host
-M --machine=CONTAINER
Operate on local container
-t --type=TYPE List units of a particular type
--state=STATE List units with particular LOAD or SUB or ACTIVE state
-p --property=NAME Show only properties by this name
-a --all Show all loaded units/properties, including dead/empty
ones. To list all units installed on the system, use
the 'list-unit-files' command instead.
-l --full Don't ellipsize unit names on output
-r --recursive Show unit list of host and local containers
--reverse Show reverse dependencies with 'list-dependencies'
--job-mode=MODE Specify how to deal with already queued jobs, when
queueing a new job
--show-types When showing sockets, explicitly show their type
-i --ignore-inhibitors
...
You might also like to read these following Nginx related articles.
- The Ultimate Guide to Secure, Harden and Improve Performance of Nginx Web Server
- Amplify – NGINX Monitoring Made Easy
- ngxtop – Monitor Nginx Log Files in Real Time in Linux
- How to Install Nginx with Virtual Hosts and SSL Certificate
- How to Hide Nginx Server Version in Linux
That’s all for now! In this guide, we have explained some of the most commonly used Nginx service management commands that you should know, including starting, enabling, restarting and stopping Nginx. If you have any additions or questions to ask, use the feedback form below.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.