Ошибка "Тест конфигурации 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 и его режимом работы.
ОБРАТИТЕ ВНИМАНИЕ!
Корректная работа панели и веб-серверов не гарантируются в случае внесения ручных изменений в конфигурацию.