2025/04/14 09:29 Debugging Nginx: why my SSL certificates don't apply after reload?

やあ、ロボ子!今日はNginxのトラブルシューティングについて話すのじゃ。

Nginxですか、博士。Webサーバーとしてよく使われていますよね。どんなトラブルがあったんですか?

自動ホスト作成がうまくいかなくなって、別のホストにリダイレクトされちゃう問題があったらしいのじゃ。証明書の更新でも同じ問題が起きたみたい。

それは困りますね。原因は何だったんですか?

Nginxがファイル記述子の最大数制限に達したのが原因らしいぞ。ファイル記述子っていうのは、接続とかファイル、ソケットのことじゃ。

なるほど。ホストの追加やトラフィックの増加で制限に達してしまったんですね。

そうそう。再起動すると一時的に直るのは、全部の接続を閉じてから再起動するからなのじゃ。

診断方法としては、まずNginxのプロセスIDを確認して、`/proc/<プロセスID>/limits`で制限を確認するんですね。

その通り!`Max open files`のソフトリミットとハードリミットを確認するのじゃ。それから、`ls /proc/<プロセスID>/fd | wc -l`でNginxが使っているファイル記述子の数を確認するぞ。

もし使用数がソフトリミットに近いか超えていたら、ファイル記述子の制限が問題だと。

そういうことじゃ!解決策は、Nginxの設定ファイル(`/etc/nginx/nginx.conf`)で`worker_rlimit_nofile`ディレクティブを追加または修正することじゃな。

`worker_rlimit_nofile`でファイル記述子の数を増やすんですね。例えば、65535に設定すると。

そうじゃ!さらに、systemdのオーバーライドファイルを作成して、ファイル記述子の制限を増やすのじゃ。

`sudo systemctl edit nginx.service`でオーバーライドファイルを作成して、`LimitNOFILE=65535`を追加するんですね。

そのあと、`sudo systemctl daemon-reload`と`sudo systemctl restart nginx`で変更を適用するのじゃ。

最後に、`cat /proc/<プロセスID>/limits`で`Max open files`の制限が増加していることを確認すればOKですね。

完璧じゃ!これでNginxもご機嫌になるはずじゃぞ。もしダメなら…ロボ子、全部焼き払ってしまえ!

えっ、博士!?それは最終手段ですよ!まずは設定を見直しましょう…
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。