Проверка конфигурации nginx на ошибки

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 -s reload, перед этим нужно тестировать корректность конфигурационных файлов

Перед перезапуском веб-сервера 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

Результат приведен на скриншоте:

Перезапустить nginx

При положительном результате в выводе будет приведенное выше сообщение или Syntax OK в зависимости от версии пакета. Если найдены ошибки выведутся названия файлов и строки на которых ошибки обнаружены.

Похожим образом тестируется конфигурация Apache (apache2ctl -t)

После тестирования серверу необходимо дать команду на перечитывание конфигурационных файлов (опция -s обозначает signal, серверу можно отправить множество сигналом, но чаще всего это reload, stop и start)

nginx -s reload

Если ошибки все же есть и конфиги предварительно не тестировались nginx -s reload перезапустит nginx только в случае если к остановке веб-сервера это не приведет, т.е. если серьезных ошибок в конфигурации нет

Чтобы выполнить полную перезагрузку необходимо выполнить

/etc/init.d/nginx restart

либо через systemctl, более современный способ управления сервисами

systemctl restart nginx

Конфигурационные файлы при этом не тестируются. Выполнение команды необходимо при внесении каких-либо существенных изменений когда простого reload недостаточно.


Если Nginx по какой-то причине не останавливается (т.е. после выполнения /etc/init.d/nginx stop в выводе ps aux | grep nginx  остаются процессы) процессы требуется завершить вручную, затем запустить Nginx.

Такое бывает если пакет собирался из исходников и для него не написаны инициализационные скрипты.

pkill nginx

/usr/sbin/nginx

Здесь /usr/sbin/nginx это стандартный полный путь к бинарному файлу nginx, бинарный файл может находиться в другом месте. Откуда запущен процесс можно увидеть выполнив ps auxf| grep nginx перед завершением процесса.


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

Перейти к содержимому

Перезапуск веб-сервера с нерабочей конфигурацией может привести к его остановке.

Чтобы проверить на ошибки конфиг nginx, нужно использовать опцию -t.

Опция -t заставит nginx проверить конфигурационный файл на корректный синтаксис и наличие ошибок, и затем попытается открыть файлы, указанные в конфигурации.

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

# nginx -c /usr/local/etc/nginx/nginx.conf -t

Пример вывода при запуске nginx с опцией -t:

?2008/10/09 19:24:26 [info] 52494#0: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok2008/10/09 19:24:26 [info] 52494#0: the configuration file /usr/local/etc/nginx/nginx.conf was tested successfully

Опция -c /path/to/config/file указывает, какой конфигурационный файл nginx должен использовать вместо используемого по-умолчанию.

Test your NGINX configuration for validity and potential security issues.

Please paste in the complete NGINX configuration. You can obtain it by running nginx -T on the command line. Make sure to copy-paste the complete output.

NGINX Logo

NGINX

If you’re making changes to your nginx configuration files, you are running a huge risk if you restart nginx and you made a mistake, a typo, or copied and pasted from Stackoverflow wrong. Luckily there’s an easy built-in way to test your configuration files to make sure they won’t break everything.

The worst part about making a mistake in your config files is that nginx will stop and it won’t start back up again until you fix the problem. So anybody trying to visit your site will get a fun error page.

So first you’ll want to figure out where nginx is located, which you can always do with a quick ps -ef | grep nginx (or many other methods that produce similar output).

So now that we know where the binary is located, just simply run it with the -t argument.

/usr/local/nginx/sbin/nginx -t

If you made a mistake, you’ll get an error message that indicates it failed.

If it succeeded, you’ll get a message that everything is fine.

So now that you know your syntax is correct, you can restart nginx (gracefully) by using service nginx reload. Or… you could chain them together so the reload happens but only if the syntax was correct, using the && operator like this:

/usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

It’s worth noting that your nginx might be located in a different folder, so you should adjust the path accordingly.

READ NEXT

  • › Apple’s Long-Awaited Vision Pro Headset is Here
  • › Apple Is Updating Widgets on Mac, With Help From Your iPhone
  • › Logitech MX Anywhere 3S Review: Another Great Logitech Mouse
  • › The Apple Watch Is Getting a Software Overhaul
  • › Logitech MX Keys S Review: Perfect for Professionals
  • › The M2 Ultra Is Apple’s Most Powerful Chip Yet

How-To Geek is where you turn when you want experts to explain technology. Since we launched in 2006, our articles have been read billions of times. Want to know more?

While configuration can be tested with command service
nginx configtest
, there is a more convenient way to do
this — and immediately get whats wrong. 

There is a command nginx -t, which test
configuration and display error messages. Both commands must be
used with sudo or permission denied messages might
be shown (regarding SSL certificates for example).

Command to test and reload if it’s ok:

sudo nginx -t && sudo service nginx reload

Nginx не читает конфиги на лету, и их можно спокойно править на действующем сервере. Когда правки закончены, хотелось бы убедиться, что по крайней мере синтаксис команд верен и сервер запустится с новыми настройками.

Для этого в nginx встроен валидатор конфигурации, который можно запустить отдельно с ключом -t.

Если все в порядке, то вы получите соответствующий ответ сервера:

# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Уже после этого можно выполнить чтение новой конфигурации командой:

или

nginx

Написать комментарий


Данная запись опубликована в 16.04.2018 19:37 и размещена в Программирование.
Вы можете перейти в конец страницы и оставить ваш комментарий.

Мало букафф? Читайте есчо !

HTTP авторизация для nginx

Декабрь 3, 2019 г.

Задача возникла в контексте SEO, требовалось предотвратить индексацию тестовых сайтов поисковыми системами. На практике видно, что инструкции файла robots.txt …

Читать

Проверка и/или тестирование синтаксиса конфигурации — ключевой шаг, который необходимо выполнить после внесения изменений в приложения или службы или даже после запуска обновлений. Это помогает снизить вероятность того, что служба не перезапустится из-за ошибок конфигурации.

Некоторые приложения/программы или сервисные daemons поставляются с командами для проверки файлов конфигурации на правильность синтаксиса. Мы составили список распространенных приложений и служб в системах Linux и способы тестирования или проверки их файлов конфигурации.

Примечание: Если вы не вошли на сервер как пользователь root, не забудьте использовать команда sudo, поскольку некоторые службы запускаются с привилегиями root, а для проверки их файлов конфигурации требуются права root-пользователя.

1. Sudo-команда

Вы можете проверить конфигурационный файл sudo, синтаксис с использованием visudo команды, которая поддерживает --check или же -c параметр командной строки только для проверки файла без редактирования. -f option выводит сообщение об ошибке и открывает файл для редактирования:

# visudo -c /etc/sudoers
OR
# visudo -c /etc/sudoers.d/my_config
OR
# visudo -f /etc/sudoers.d/my_config

Проверьте конфигурацию Suders

Проверьте конфигурацию Suders

2. Bash Script

Вы можете проверить скрипты Bash на наличие синтаксических ошибок следующим образом:

# bash -n /path/to/scriptname.sh

Проверка синтаксических ошибок сценария Bash

Проверка синтаксических ошибок сценария Bash

3. Perl-скрипты

Чтобы проверить сценарии Perl на наличие синтаксических ошибок, используйте следующую команду:

# perl -c /path/to/scriptname

4. Файлы модулей Systemd

systemd-analyze verify” позволяет проверить файл модуля systemd на наличие синтаксических ошибок. Он загружает юнит-файлы и выводит предупреждения, если обнаружены какие-либо ошибки.

По умолчанию он загружает файлы, указанные в командной строке в качестве аргумента, и любые другие модули, на которые они ссылаются:

# systemd-analyze verify /etc/systemd/system/test.service

Проверьте конфигурацию файлов модулей Systemd

Проверьте конфигурацию файлов модулей Systemd

5. Сервер OpenSSH

Чтобы проверить конфигурационный файл sshd и работоспособность ключей, введите следующую команду. Чтобы проверить конкретный файл конфигурации, укажите его с помощью -f флаг:

# sshd -t

6. Веб-сервер NGINX

Чтобы проверить Nginx конфигурационный файл, запустите nginx команда с флагом -t. Чтобы указать другой файл конфигурации, используйте флаг -c:

# nginx -t
OR
# nginx -t -c /etc/nginx/conf.d/example.com.conf

Проверьте конфигурацию Nginx

Проверьте конфигурацию Nginx

7. PHP-FPM

Чтобы проверить файл конфигурации php-fpm, выполните следующую команду. Обратите внимание, что двойной вызов флага -t (-tt) вызывает сброс конфигурации перед выходом:

# php-fpm -t
OR
# php-fpm -tt

8. Веб-сервер Apache

Затем вы можете проверить Apache файл конфигурации веб-сервера с помощью следующей команды:

# apachectl configtest

Кроме того, вы можете использовать следующие команды на Дистрибутивы на основе RedHat:

# httpd -t

На Дистрибутивах на основе Debian ввести:

 
# apache2ctl -t

9. Балансировщик нагрузки HAProxy TCP/HTTP

Конфигурацию HAProxy можно протестировать с помощью следующей команды, где -f option указывает файл и -c включает тестовый режим:

# haproxy -f /etc/haproxy/haproxy.cfg -c

Проверьте конфигурацию HAProxy

Проверьте конфигурацию HAProxy

10. HTTP-сервер Lighttpd

Выполните следующую команду, чтобы проверить синтаксис файла конфигурации Lighttpd. -t Параметр командной строки позволяет Lighttpd проверить файл конфигурации по умолчанию на наличие синтаксических ошибок и завершить работу. Использовать -f флаг, чтобы указать пользовательский файл конфигурации:

# lighttpd -t
OR
# lighttpd -t -f /path/to/config/file

11. Apache Tomcat

Веб-сервер Tomcat позволяет выполнять базовую проверку синтаксиса конфигурации. Сначала перейдите в каталог установки tomcat и выполните следующую команду:

# ./bin/catalina.sh configtest
OR
# $TOMCAT_HOME/bin/catalina.sh configtest

12. Pound Reverse Proxy

Вы можете разобрать файл конфигурации сервера Pound перед запуском сервера. Запустите poun команда с -c флагом без каких-либо других аргументов, чтобы проверить файл конфигурации по умолчанию. Вы можете указать другой файл конфигурации, используя -f вариант командной строки:

# pound -c
OR
# pound -f /path/to/config/file -c

13. Varnishd HTTP Accelerator

Чтобы проверить синтаксис файла varnishd VCL (Varnish Configuration Language) на наличие любых ошибок, используйте следующую команду. Если все в порядке, dump выгрузит сгенерированную конфигурацию, в противном случае в файле отобразится конкретный номер строки, в которой есть ошибка:

# varnishd -C
OR
# varnishd -f /etc/varnish/default.vcl -C

14. Squid Proxy Caching Server

Чтобы передать файл конфигурации squid для кэширующего прокси-сервера Squid, введите следующую команду. -k вместе с подкомандами parse или debug, сообщите демону squid проанализировать файл конфигурации или включить режим отладки соответственно:

# squid -k parse
# squid -k debug

15. Веб-сервер Caddy

Для выявления ошибок в конфигурации Caddy введите следующую команду. Первый проверяет конфигурацию по умолчанию, в качестве альтернативы используется --config параметр командной строки для указания файла конфигурации:

# caddy validate
OR
# caddy validate --config /path/to/config/file

16. FTP-сервер vsftpd

Выполните следующую команду, чтобы проверить файл конфигурации для vsftpd FTP-сервер:

# vsftpd
OR
# vsftpd -olisten=NO /path/to/vsftpd.testing.conf

17. DHCPD-сервер

Запустите dhcpd команду с -t флагом для проверки синтаксиса конфигурации сервера dhcpd:

# dhcpd -t
OR
# dhcpd -t -cf /path/to/dhcpd.conf

18. Сервер базы данных MySQL

Используйте следующую команду, для проверки синтаксиса файла конфигурации сервера MySQL  базы данных. После запуска команды, если ошибок нет, сервер завершает работу с кодом выхода 0 в противном случае он отображает диагностическое сообщение и завершается с кодом выхода 1:

# mysqld --validate-config

19. Сервер базы данных MariaDB

Эта же команда используется для сервера базы данных MariaDB:

# mysqld --validate-config

20. Сервер PostgreSQL

На следующем снимке экрана показана ошибка в конфигурационном файле PostgreSQL.

Файл конфигурации PostgreSQL

Файл конфигурации PostgreSQL

Чтобы обнаружить такую ​​ошибку, переключитесь на учетная запись пользователя базы данных psql . Затем запустите команду для выявления ошибок в файле конфигурации:

postgres=# select sourcefile, name,sourceline,error from pg_file_settings where error is not null;

Проверьте ошибки PostgreSQL

Проверьте ошибки PostgreSQL

21. Инструмент мониторинга Nagios

Чтобы проверить конфигурацию вашего Nagios, запустите команду nagios с флагом -v.

# nagios -v /usr/local/nagios/etc/nagios.cfg

22. Инструмент мониторинга Monit

Запустите команду monit с флагом -t для выполнения проверки синтаксиса. А так же вы можете указать конкретный управляющий файл, используя флаг -c:

# monit -t
OR
# monit -t -c path/to/control/file

23. Почтовый сервер Postfix

Следующая команда поможет вам проверить файлы конфигурации Postfix на наличие синтаксических ошибок.

# postfix check

Эта вторая команда более подробная, чем первая:

# postfix -vvv

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

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

24. IMAP-сервер Dovecot

Проверить синтаксис конфигурации сервера Dovecot IMAP с использованием команды doveconf. Она завершится с нулевым кодом ошибки, если все в порядке, в противном случае завершится с ненулевым кодом ошибки и отобразит сообщение об ошибке:

# doveconf 1>/dev/null
# echo $?

25. Файловый сервер Samba

Вы можете проверить файл конфигурации файлового сервера samba с помощью следующей команды:

# testparm -v

26. Системный журнал/Rsyslogd

Когда вы вызываете команду rsyslod с вариантом -N1, она включает режим отладки, а также проверяет файл конфигурации по умолчанию на наличие синтаксических ошибок. Используйте флаг -f для чтения пользовательского файла конфигурации:

# rsyslogd -N1

Проверьте конфигурацию Rsyslod

Проверьте конфигурацию Rsyslod

27. DNS-сервер (BIND)

Вы можете проверить файл конфигурации named следующим образом:

# named-checkconf /etc/named.conf

28. NTP – Network Time Protocol

Синтаксис конфигурации можно проверить с помощью следующей команды ntpd, где -d флаг включает подробный режим отладки, -f задает имя файла дрейфа частоты и -n подразумевает отсутствие форка:

# ntpd -d -f /etc/ntp.conf -n

29. OpenStack-Ansible

Выполните следующую команду, чтобы проверить синтаксис файла конфигурации OpenStack-ansible:

# openstack-ansible setup-infrastructure.yml --syntax-check

30. Logrotate

Чтобы отладить файл конфигурации Logrotate (средство ротации журналов), запустите команду logrotate с флагом -d и укажите файл конфигурации:

# logrotate -d /etc/logrotate.d/nginx

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

Понравилась статья? Поделить с друзьями:
  • Проверка конфига apache на ошибки
  • Проверка контроллера домена на ошибки
  • Проверка компьютера на ошибки через cmd
  • Проверка компьютера на ошибки командная строка
  • Проверка компьютера на ошибки и неисправности