Welcome! Log In Create A New Profile

Advanced

Re: nginx restart AND listen ip:port

Maxim Dounin
February 14, 2018 07:42AM
Hello!

On Wed, Feb 14, 2018 at 04:56:42AM -0500, imsystem wrote:

> Здравствуйте. Обнаружил такую проблему(багу?).
> При добавлении блока:
>
> server {
> listen ip:80 default_server;
> server_name _;
> return 301 https://mysite.com;
> }
>
> Перестаёт работать рестарт сервера.
> Если же ip:80 заменить на просто порт 80, то команды service nginx restart
> или systemctl restart nginx работают.
>
> В обоих случаях команда nginx -t говорит, что всё хорошо, в логах
> соответственно ничего нет.
> Команды на старт/стоп работают в обоих случаях, т.е. я просто не могу
> перезагрузить.

С учётом того, что restart - это фактически stop и следующий за
ним stop, либо у вас в service-файле для systemd написано что-то
странное, либо вы на самом деле путаете, и речь про reload.

С reload'ом на Linux'е имеется достаточно типичная проблема: в
отличие от других операционных систем, linux не позволяет
одновременно открыть listen-сокеты на *:80 и <ip>:80.

В результате если nginx уже запущен с listen на *:80, то написать
вместо него в конфигурации listen <ip>:80 и сделать reload -
нельзя, nginx не сможет создать новые listen-сокеты для новой
конфигурации, так как они конфликтуют с уже открытыми
listen-сокетами старой конфигурации. В error log'е, заданном на
глобальном уровне, будет при этом что-то вроде:

2018/02/14 15:32:52 [notice] 1672#1672: signal 1 (SIGHUP) received from 1762, reconfiguring
2018/02/14 15:32:52 [notice] 1672#1672: reconfiguring
2018/02/14 15:32:52 [emerg] 1672#1672: bind() to 127.0.0.1:80 failed (98: Address already in use)
2018/02/14 15:32:52 [notice] 1672#1672: try again to bind() after 500ms
2018/02/14 15:32:52 [emerg] 1672#1672: bind() to 127.0.0.1:80 failed (98: Address already in use)
2018/02/14 15:32:52 [notice] 1672#1672: try again to bind() after 500ms
2018/02/14 15:32:52 [emerg] 1672#1672: bind() to 127.0.0.1:80 failed (98: Address already in use)
2018/02/14 15:32:52 [notice] 1672#1672: try again to bind() after 500ms
2018/02/14 15:32:52 [emerg] 1672#1672: bind() to 127.0.0.1:80 failed (98: Address already in use)
2018/02/14 15:32:52 [notice] 1672#1672: try again to bind() after 500ms
2018/02/14 15:32:52 [emerg] 1672#1672: bind() to 127.0.0.1:80 failed (98: Address already in use)
2018/02/14 15:32:52 [notice] 1672#1672: try again to bind() after 500ms
2018/02/14 15:32:52 [emerg] 1672#1672: still could not bind()

Соответственно nginx не сможет создать новую конфигурацию, и
продолжит работать со старой.

Если такое изменение в listen-сокетах действительно необходимо, то
следует сделать restart - то есть выключить nginx, и включить его
обратно.

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

nginx restart AND listen ip:port

imsystem February 14, 2018 04:56AM

Re: nginx restart AND listen ip:port

imsystem February 14, 2018 05:04AM

Re: nginx restart AND listen ip:port

imsystem February 14, 2018 05:10AM

Re: nginx restart AND listen ip:port

Maxim Dounin February 14, 2018 07:42AM

Re: nginx restart AND listen ip:port

imsystem February 14, 2018 07:56AM

Re: nginx restart AND listen ip:port

Maxim Dounin February 14, 2018 09:04AM

Re: nginx restart AND listen ip:port

imsystem February 14, 2018 09:58AM

Re: nginx restart AND listen ip:port

Maxim Dounin February 14, 2018 10:18AM

Re: nginx restart AND listen ip:port

imsystem February 14, 2018 11:08AM

Re: nginx restart AND listen ip:port

Maxim Dounin February 14, 2018 11:50AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 63
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready