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