/
/
Ошибка "Тест конфигурации web-сервера завершился неудачно"

Ошибка "Тест конфигурации web-сервера завершился неудачно"

Симптомы

При изменении настроек сайта в панели ispmanager появляется следующее сообщение об ошибке:

Тест конфигурации web-сервера завершился неудачно <подробности ошибки>
(nginx: configuration file /etc/nginx/nginx.conf test failed)

Причины

Проверка синтаксиса конфигурации веб-сервера Nginx возникла ошибка. Чаще всего подобная ошибка возникает в случае ручных изменений в конфигурационных файлах самого веб-сервера или виртуального хоста (конфигурационного файла сайта).

Решение

ОБРАТИТЕ ВНИМАНИЕ!

Если в данном руководстве вы не нашли решение возникшей у вас проблемы, то произведите следующую первичную диагностику указанную в главе "При прочих ошибках" и напишите в поддержку ispmanager, предоставив результаты диагностики.

При ошибке прослушиваемого IP-адреса

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

Тест конфигурации web-сервера при сохранении файла
'/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf' завершился неудачно:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx:
[emerg] bind() to <ip-адрес:порт> failed (99: Unknown error) nginx: configuration file /etc/nginx/nginx.conf test failed

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

Сделать это можно с помощью утилиты "grep":

grep -r <ip-адрес:порт> /etc/nginx/*

Также следует проверить наличие IP-адреса на сетевом интерфейсе сервера:

ip a | grep <ip-адрес:порт>

Если адрес отсутствует, то веб-сервер Nginx не обработает конфигурацию с таким адресом - необходимо либо изменить IP-адрес в конфигурационных файлах, либо добавить IP-адрес на интерфейс.

При ошибке пути файла сертификата

Если указан некорректный путь до файла сертификата, панель вернет следующую ошибку:

Тест конфигурации web-сервера при сохранении файла
'/etc/nginx/vhosts/<пользователь>/<название_сайта>.conf' failed:
nginx: [emerg] cannot load certificate "/var/www/httpd-cert/<пользователь>/<название_сайта>_le1.crtca":
BIO_new_file() failed (SSL: error:02001002:system library:
fopen:No such file or directory:fopen('/var/www/httpd-cer/<пользователь>/<название_сайта>_le1.crtca','r')
error:2006D080:BIO routines:BIO_new_file:no such file) nginx:
configuration file /etc/nginx/nginx.conf test failed

Ошибка возникает, когда путь к сертификату указан неверно или файл сертификата отсутствует по указанному пути.

Необходимо проверить существуют ли файлы сертификата по указанному пути:

ls -la /var/www/httpd-cert/<имя_пользователя>/<название_сайта>

Также следует проверить, в каком файле указан путь до этих файлов:

grep -r <название_сайта>_le /etc/nginx/vhosts/*

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

При ошибке синтаксиса "directive is not allowed"

При ошибке синтаксиса "directive is not allowed", панель вернет ошибку следующего формата:

Тест конфигурации web-сервера при сохранении файла
'/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf' завершился неудачно:
nginx: [emerg] "<имя_директивы>" directive is not allowed here in
/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf:
85 nginx: configuration file /etc/nginx/nginx.conf test failed

В данном случае, ошибка указывает на некорректное расположение директивы, например внутри директивы "location" указана директива "server", что является вышестоящей директивой и не может быть указана внутри "location".

Чтобы исправить эту ошибку, необходимо проверить структуру конфигурационного файла и разместить директивы корректно.

При ошибке синтаксиса "directive is duplicate"

При ошибке синтаксиса "directive is duplicate", панель вернет ошибку следующего формата:

Тест конфигурации web-сервера при сохранении файла
'/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf' завершился неудачно:
nginx: [emerg] "<расположение_директивы>" directive "<имя_директивы>" directive is duplicate in
/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf:
122 nginx: configuration file /etc/nginx/nginx.conf test failed

В данном случае, ошибка указывает на дублирование директивы в одной из секций конфигурационного файла, например директива "gzip" была дважды обозначена в секции "location" более одного раза.

Чтобы исправить эту ошибку, необходимо проверить секцию, которая указана на месте "<расположение_директивы>" в тексте ошибки и исключить дублирующие директивы.

При прочих ошибках

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

Тест конфигурации web-сервера при сохранении файла
'/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf' завершился неудачно:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: [emerg] <подробности_ошибки>
/etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf:
<номер_строки> configuration file /etc/nginx/nginx.conf test failed

Причиной такой ошибки может быть опечатка или указание некорректных их значений.

Чтобы исправить такую ошибку, с помощью текстового редактора откройте файл конфигурации указанный в ошибке и проверьте синтаксис строки, которая будет указана в "<подробности_ошибки>". Если были внесены ручные изменений в конфигурацию, отмените их.

После этого, выполните проверку синтаксиса с помощью команд "nginx -t", сначала выполнив её без дополнительных параметров, а затем указав путь до проблемного файла конфигурации:

nginx -t /etc/nginx/vhosts/<имя_пользователя>/<название_сайта>.conf

Также для сравнения конфигурации проблемного сайта и стандартной конфигурации, можно создать пустой сайт с аналогичной версией PHP и его режимом работы.

ОБРАТИТЕ ВНИМАНИЕ!

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