以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

nginxでrestartしたのに設定が反映されない時はnginx -s reload

http://www.flickr.com/photos/94778205@N00/1717425332photo by alternatePhotography 今月末で契約終了となる大阪側のVPSのデータを新たに契約した石狩側に順次移行しているが、rita-mordio.infoを大阪側から石狩側に移転してnginx側でバーチャルホスト設定したあと、ついでにバーチャルホスト別にログを分けるようにしてsudo service nginx restartしたのはいいが、ログファイルが生成されている癖に設定が反映されていない。

Apacheの時はrestartでも設定変更が反映されたが、nginxだと反映されないので「なんでや!?」としばらく格闘していたが、どうやらrestartだとマスタープロセスだけの再起動?しか行われないっぽく、肝心のワーカープロセスに変更が行き届いてなかったようだ。

なので以下のコマンドでマスタープロセスに対してHUPシグナルを送る*1と幸せになれるかも。

$ sudo nginx -s reload
#または
$ sudo kill -HUP $( cat /var/run/nginx.pid )

それでも幸せになれない時は参考ページみたく直接ワーカープロセスやマスタープロセスに対してTERMなりKILLシグナル送るなりしよう。
ちなみに、PPA(非公式)版nginx、service nginx reloadだとどういうわけか「reload: Job is not running: nginx」と怒られてしまう謎。

参考:nginxにreloadシグナルを送っても設定を再読み込みしてくれなかったりなかなかKILLされなかったり - There's an echo in my head
参考2:CommandLine | NGINX

*1:新しい設定でワーカープロセスを起動し直し、古いワーカープロセスを停止させる作用を持つ