Welcome! Log In Create A New Profile

Advanced

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

Gena Makhomed
August 22, 2010 03:06PM
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
--- src/core/nginx.c.orig 2010-08-22 20:23:37.000000000 +0300
+++ src/core/nginx.c 2010-08-22 20:54:22.000000000 +0300
@@ -220,6 +220,7 @@
" -V : show version and configure options then exit"
CRLF
" -t : test configuration and exit" CRLF
+ " -q : suppress non-error messages" CRLF
" -s signal : send signal to a master process: "
"stop, quit, reopen, reload" CRLF
#ifdef NGX_PREFIX
@@ -332,8 +333,10 @@
}

if (ngx_test_config) {
- ngx_log_stderr(0, "configuration file %s test is successful",
- cycle->conf_file.data);
+ if (!ngx_quiet_mode) {
+ ngx_log_stderr(0, "configuration file %s test is successful",
+ cycle->conf_file.data);
+ }
return 0;
}

@@ -685,6 +688,10 @@
ngx_test_config = 1;
break;

+ case 'q':
+ ngx_quiet_mode = 1;
+ break;
+
case 'p':
if (*p) {
ngx_prefix = p;
--- src/core/ngx_cycle.c.orig 2010-08-22 20:30:35.000000000 +0300
+++ src/core/ngx_cycle.c 2010-08-22 20:47:24.000000000 +0300
@@ -23,6 +23,7 @@
static ngx_pool_t *ngx_temp_pool;
static ngx_event_t ngx_cleaner_event;

+ngx_uint_t ngx_quiet_mode;
ngx_uint_t ngx_test_config;

#if (NGX_THREADS)
@@ -267,8 +268,10 @@
}

if (ngx_test_config) {
- ngx_log_stderr(0, "the configuration file %s syntax is ok",
- cycle->conf_file.data);
+ if (!ngx_quiet_mode) {
+ ngx_log_stderr(0, "the configuration file %s syntax is ok",
+ cycle->conf_file.data);
+ }
}

for (i = 0; ngx_modules[i]; i++) {
--- src/core/ngx_cycle.h.orig 2010-08-22 20:21:02.000000000 +0300
+++ src/core/ngx_cycle.h 2010-08-22 20:47:51.000000000 +0300
@@ -129,6 +129,7 @@
extern volatile ngx_cycle_t *ngx_cycle;
extern ngx_array_t ngx_old_cycles;
extern ngx_module_t ngx_core_module;
+extern ngx_uint_t ngx_quiet_mode;
extern ngx_uint_t ngx_test_config;
#if (NGX_THREADS)
extern ngx_tls_key_t ngx_core_tls_key;
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Gena Makhomed August 05, 2010 06:48PM

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

Anton Yuzhaninov August 05, 2010 07:14PM

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

Gena Makhomed August 05, 2010 07:44PM

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

Maxim Dounin August 05, 2010 10:46PM

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

Gena Makhomed August 22, 2010 03:30PM

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

Igor Sysoev August 06, 2010 02:30AM

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

Gena Makhomed August 22, 2010 03:06PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 146
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready