Проверить nginx conf на ошибки

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

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

Чтобы проверить на ошибки конфиг 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 должен использовать вместо используемого по-умолчанию.

Перезапустить 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 конфигурируют специальным образом, что дает максимальную производительность. Для небольших проектов выполнить такие настройки тоже  может оказаться полезно.

Other Resources

It’s important to test your NGINX configuration to prevent downtime. If you make a syntax error, your restart will fail and your site will go down. Fortunately it’s really easy to test your configuration before reloading.

nginx logo

Test Default Config

				
					> nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
				
			

The NGINX command will test the default configuration files without affecting your NGINX service. You receive error information and details on which files were checked.

Config Errors

If NGINX detects an error in your configuration file, you will get output like the following:

				
					> nginx -t
nginx: [emerg] unexpected "}" in /etc/nginx/nginx.conf:119
nginx: configuration file /etc/nginx/nginx.conf test failed
				
			

This error tells us there is something unexpected at /etc/nginx/nginx.conf on line 119. If we open that file we should be able to track down the issue and try again.

Common Errors

There are few things to check when you get an error:

  1. Missing braces: This is one of the most common issues. Ensure each block has an opening and closing brace. For example, ensure your server block starts with a brace and ends with one.
  2. Missing semicolon: Each of your directives (e.g. server_name) should end with a semicolon. It’s just like writing C code.

Ready to get the whole story on your uptime?

Status List delivers uptime checks with technical diagnostics in a one dashboard. A pass/fail isn’t the whole story.

Join over 2,000 companies and try it for free today.

statuslist dashboard, monitor expanded

Testing Custom Config File

You can also test config files in non-standard locations. This can be especially helpful if you’re running Docker. Simply pass the “-c” option to your NGINX command. See below for an example:

				
					> nginx -t -c /opt/mynginx.conf
nginx: the configuration file /opt/mynginx.conf syntax is ok
nginx: configuration file /opt/mynginx.conf test is successful
				
			

More Reading



  • NGINX + Laravel Setup Guide



  • How to Test NGINX Config



  • How to use server_name



  • How to use NGINX Variables + Reference List

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 и размещена в рубрике Программирование.
Вы можете перейти в конец страницы и оставить ваш комментарий.

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

Если не работают ЧПУ для drupal под nginx…

Июль 16, 2014 г.

Арендовал у netangels «облачный VDS» и решил попробовать их образ Debian Wheezy Nginx + PHP (php-fpm). С Nginx дела до тех пор не имел, потому с некоторыми настройками пришлось разбираться с чистого листа.

На самом деле, единственный вопрос, с …

Читать

If you edited some nginx config file and nginx doesn’t want to reload or restart, e.g. with an error message like this:

# service nginx reload
Job for nginx.service failed because the control process exited with error code.
See "systemctl  status nginx.service" and "journalctl  -xe" for details.

you likely have some error in one of your config files.

There’s a simple command to check for errors (you need to run it as root): nginx -t

Example output:

nginx: [emerg] unknown directive "autoindex$" in /etc/nginx/sites-enabled/mysite:31
nginx: configuration file /etc/nginx/nginx.conf test failed

Firstly, the last line tells you that there actually is some error in the config files.
The first line tells you exactly where it is: /etc/nginx/sites-enabled/mysite:31 means: Look in the file /etc/nginx/sites-enabled/mysite, line 31.

In this particular case, the actual error message is unknown directive "autoindex$". By checking the aforementioned file I was able to find out that I accidentally entered autoindex $; instead of autoindex on;

After fixing this issue, nginx -t shows that the configuration file seems correct now:

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

Note that while most cases of nginx failing to (re)start are caused by issues in the config files, there are some cases in which the config file seems correct and nginx will still not start up. In that case. have a look at the logfile which is commonly located at /var/log/nginx/error.log . You need to be root in order to view it. I recommend this command:

sudo tail -n 1000 /var/log/nginx/error.log

Понравилась статья? Поделить с друзьями:
  • Проверить mac os на наличие ошибок
  • Проверить hdd на ошибки и исправить
  • Проверить esp ошибка
  • Проверить esc рено флюенс ошибка
  • Проверить docx на ошибки