Re: [bugreport] nginx -t возвращает 0 код завершения при наличии ошибок в конфиге

Gena Makhomed gmm на csdoc.com
Пт Авг 6 03:43:19 MSD 2010


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". нет разве?

>
> В случае фатальных ошибок exit code не равен нулю.
>

из nginx -t возвращать нулевой код возврата в случае наличия
ошибок в конфиге - это мягко говоря, неожиданное поведение.

если я не ошибаюсь, эта "фича" появилась для того, чтобы
после "service nginx restart" nginx мог запуститься даже
если в конфиге были какие-то "нефатальные" ошибки.
но при этом появился и баг в работе nginx -t.

P.S.

очень не хочется парсить вывод nginx -t чтобы понять были
найдены ошибки в процессе тестирования конфига или нет...

-- 
Best regards,
  Gena




Подробная информация о списке рассылки nginx-ru