地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Nginx】reloadではソケットの開き直しは反映されない

すでにopen(2)済みのソケットのソケットオプションをいじることはLinuxでは可能なのでsetsockopt(2)で設定できる内容ならreloadだけでも変更が可能。一方でbindするIPは後から変えれないので一旦ソケットを閉じる必要がある。その場合はreloadだけだと反映されない。listenするポートの追加はreloadだけでもいける。この辺は忘れがちなのでメモ。

実験

0.0.0.0:80でListen

$ ss -antupo | grep LIST | grep nginx
tcp   LISTEN    0      511                  0.0.0.0:80                 0.0.0.0:*     users:(("nginx",pid=208287,fd=6),("nginx",pid=208286,fd=6),("nginx",pid=208285,fd=6))

192.168.1.1:80でListenするようにconfを書き換えてnginx reload

$ ss -antupo | grep LIST | grep nginx
tcp   LISTEN    0      511                  0.0.0.0:80                 0.0.0.0:*     users:(("nginx",pid=208287,fd=6),("nginx",pid=208286,fd=6),("nginx",pid=208285,fd=6))

変わっていない。backlogをデフォルトから1024に変更

$ ss -antupo | grep LIST | grep nginx
tcp   LISTEN    0      1024                  0.0.0.0:80                 0.0.0.0:*     users:(("nginx",pid=208287,fd=6),("nginx",pid=208286,fd=6),("nginx",pid=208285,fd=6))

変わった。