Re: [bugreport] nginx -t возвращает 0 код завершения при наличии ошибок в конфиге
Maxim Dounin
mdounin на mdounin.ru
Пт Авг 6 06:44:44 MSD 2010
Hello!
On Fri, Aug 06, 2010 at 02:43:19AM +0300, Gena Makhomed wrote:
> On 06.08.2010 2:13, Anton Yuzhaninov wrote:
>
> >>случайно сделал несколько ошибок в конфиге,
> >>но nginx -t вернул 0 код завершения:
> >>
> >># nginx -t ; echo $?
> >>[warn]: conflicting server name "example.com" on ip:80, ignored
> >>[warn]: conflicting server name "*.example.com" on ip:80, ignored
> >>the configuration file /etc/nginx/conf/nginx.conf syntax is ok
> >>configuration file /etc/nginx/conf/nginx.conf test is successful
> >>0
>
> >Это не фатальные ошибки и с ними nginx может запуститься и работать.
>
> может. только вот он игнорирует тот server { ... } который будет вторым.
> для конфигов с ошибками лучше бы nginx -t выдавал сообщение про
> ошибку и возвращал ненулевой код возврата, чем 0 и "syntax is ok".
> нет разве?
Ещё раз: это не ошибка, а предупреждение. Такие же выдаются,
например, для deprecated директив, для debug-only директив если
бинарник собран без дебага и т.п. Работать с конфигом, выдающим
предупреждения - можно, и зачастую нужно. А код возврата отражает
простой факт - сможет nginx с таким конфигом работать, или нет.
Что касается того факта что дублирующиеся имена серверов не
приводят к ошибке, а лишь к предупреждению - то это совершенно
отдельный вопрос для обсуждения. И я например склонен думать что
текущее поведение разумно. Конфигурация чётко задана, а что там в
конфиге лишнего понаписано - вообще говоря и проверять-то никто не
обещал (и например для регулярных выражений - никто и не проверяет).
> >В случае фатальных ошибок exit code не равен нулю.
> >
>
> из nginx -t возвращать нулевой код возврата в случае наличия
> ошибок в конфиге - это мягко говоря, неожиданное поведение.
>
> если я не ошибаюсь, эта "фича" появилась для того, чтобы
> после "service nginx restart" nginx мог запуститься даже
> если в конфиге были какие-то "нефатальные" ошибки.
> но при этом появился и баг в работе nginx -t.
Нет (c) Фарид Вагапов
Maxim Dounin
Подробная информация о списке рассылки nginx-ru