[nginx] Linux и reload: нюансы

Цитату взял с рассылки про nginx и привожу как есть:

С 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 не сможет создать новую конфигурацию, и
продолжит работать со старой.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *