Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bugreport] nginx -t возвращает 0 код завершения при налич ии ошибок в конфиге
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@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|