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

Gena Makhomed gmm на csdoc.com
Вс Авг 22 23:04:01 MSD 2010


On 06.08.2010 9:29, Igor Sysoev 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". нет разве?

> У меня есть рабочая конфигурация, в которой выдаётся такое предупреждение.
> Выглядит примерно так:
>
>     server {
>          listen       192.168.1.1:80;
>          listen       8005;
>          server_name  aaa.rambler.ru  192.168.1.1  "";
>
>     server {
>          listen       192.168.1.2:80;
>          listen       8005;
>          server_name  bbb.rambler.ru  192.168.1.2  "";
>
> Выдаётся "[warn]: conflicting server name "" on 0.0.0.0:8005, ignored"

понятно.

можно ли сделать дополнительный параметр командной строки -q
чтобы nginx не выводил в стандартный поток ошибок сообщения

the configuration file /etc/nginx/conf/nginx.conf syntax is ok
configuration file /etc/nginx/conf/nginx.conf test is successful

которые собственно не являются сообщениями об ошибках/предупреждениями?

патч в аттаче.

P.S. этот патч необходим для того, чтобы в Linux`е можно было сделать
защиту операций restart / online_upgrade / reload от ошибок в конфиге
и не выводить ничего лишнего на консоль, если ошибок и предупреждений 
нет, но выводить сообщения про ошибки и предупреждения, если они есть.

примерно таким образом:

restart() {
     $binary -q -t -c $config || return 6
     stop
     start
}

-- 
Best regards,
  Gena
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx.c.diff
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100822/5214c87d/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ngx_cycle.c.diff
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100822/5214c87d/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ngx_cycle.h.diff
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100822/5214c87d/attachment-0002.ksh>


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