すでに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))
変わった。