Welcome! Log In Create A New Profile

Advanced

Re: nginx: configuration file test failed

December 26, 2012 09:36AM
On Dec 26, 2012, at 17:49 , Gena Makhomed wrote:

> Здравствуйте!
>
> тестирование конфигурации завершается с сообщением про ошибку:
>
> # nginx -t
> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
> nginx: [emerg] listen() to 11.22.33.44:80, backlog 1024 failed (98: Address already in use)
> nginx: configuration file /etc/nginx/nginx.conf test failed
>
> в логах при этом только:
>
> 2012/12/26 15:15:29 [debug] 24975#0: bind() 11.22.33.44:80 #101
> 2012/12/26 15:15:29 [emerg] 24975#0: listen() to 11.22.33.44:80, backlog 1024 failed (98: Address already in use)
>
> в конфиге:
>
> nginx.conf:
>
> include /etc/nginx/conf/virtual/*;
>
> в файле /etc/nginx/conf/virtual/zzz-default-server-zzz:
>
> server {
> listen 11.22.33.44:80 default_server backlog=1024;
> server_name default-server;
> return 403;
> }
>
> во всех остальных конфигурационных файлах в каталоге virtual
> только директива listen 11.22.33.44:80 без "backlog" и "default_server".
>
> nginx version: nginx/1.2.6, сторонних модулей нет.
>
> вопрос: что я делаю неправильно, и почему
> configuration file test failed, если configuration file syntax is ok?
>
> может быть есть какой-то ключ командной строки, чтобы nginx
> не пытался открывать порты, потому что в это самое время другой
> экземпляр nginx запущен и работает, слушая эти же самые порты.
>
> P.S. на самом деле эта ошибка появляется при попытке сделать
> "service nginx reload", перед "kill -HUP" команда "nginx -t"
> завершается с ошибкой.
>
> workaround понятен - не делать "nginx -t"
> перед тем как делаю reload, но смысл тогда в команде
> "nginx -t" если она практически всегда будет завершаться
> с ошибкой? и как тогда можно протестировать конфиг на предмет
> наличия синтаксических ошибок в нем, если "nginx -t" работает
> не так как ожидалось, всегда завершаясь с кодом ошибки...
>
> P.P.S операционная система - Linux,
> OpenVZ ядро версии 2.6.32-042stab068.8,
> контейнер 64-битный.
>
> по крайней мере у апача ключ командной строки -t
> работает ожидаемым образом, тестирует свой конфиг
> только на предмет наличия в нем синтаксических ошибок,
> не пытаясь открывать порты (которые могут быть заняты)

"nginx -t" делает bind() и listen(), чтобы убедиться, что
указанные адреса существуют. Ошибка EADDRINUSE обычно
возвращается для bind() и в режиме "nginx -t" игнорируется.
Linux возвращет EADDRINUSE для listen(), если кто-то уже слушает
на *:80, а для listen() указан конкретный адрес.


--
Igor Sysoev
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

nginx: configuration file test failed

Gena Makhomed December 26, 2012 08:50AM

Re: nginx: configuration file test failed

Igor Sysoev December 26, 2012 09:36AM

Re: nginx: configuration file test failed

Gena Makhomed December 26, 2012 12:34PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 151
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