萌えハッカーニュースリーダー

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

出典: https://blog.nathanaelbonfim.com/posts/debugging-nginx-why-your-ssl-certificates-dont-apply-after-reload/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

えっ、博士!?それは最終手段ですよ!まずは設定を見直しましょう…

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search