こんにちは、小幡です。
現在はAWSを利用してサービスを運用していますが、その基盤を支えるnginx(エンジンエックス)への理解を深めるため、定評のある『nginx実践入門』を読みました。今回はその内容を自分なりの備忘録としてまとめておきます。
この記事は個人の備忘録です。
ディレクティブ
この本を読んで最初に新鮮だったのが、「ディレクティブ(Directive)」という言葉です。これまでは単に「設定項目」と呼んでいましたが、nginxの世界では一つひとつの命令をこう呼びます。
名前が似ている「ディレクトリ(フォルダ)」と混同しそうになりますが、中身は全く別物。
Listen 80
このように、サーバーの挙動を決定づける「指示(ディレクティブ)」を組み合わせていくのがnginxの設定の基本であることを学びました。
静的コンテンツの配信
Webサイトを構成する画像ファイルやCSS、JavaScriptなどの静的コンテンツの扱いについても理解が深まりました。
特に印象的だったのは、nginxの処理能力の高さです。リクエストがアプリサーバー(Rails, Go, Node.jsなど)に到達する前に、nginx側だけでキャッシュを返したりファイルを配信したりすることで、システム全体の負荷を劇的に下げることができます。「不要な仕事は後続に回さない」という設計の重要さを再認識しました。
大量リクエストの制限
特定のクライアントから短時間に大量のリクエストが届いた際、それを制限する機能についても詳しく解説されていました。
アプリサーバーまでリクエストが突き抜けてしまうと、DB負荷が高まってサービス全体がダウンするリスクがあります。nginxという「門」の段階で異常なアクセスを遮断(レートリミット)することで、アプリケーション層を守る防波堤としての役割を果たせることがわかり、非常に心強く感じました。
他にもいろいろ
本書では他にも、リバースプロキシとしての設定や、SSL/TLSの最適化、ログのカスタマイズなど、実務ですぐに試したくなる機能が網羅されていました。AWS環境であれば、ALB(Application Load Balancer)とnginxをどう使い分けるか、といった構成を考える上でも非常に役立つ知識ばかりです。
まとめ
今回『nginx実践入門』を通読したことで、これまで「なんとなく」触っていた設定ファイルの各行が、何を意図しているのか明確に見えるようになりました。インフラのパフォーマンス向上に向けて、今回学んだディレクティブを実際の運用にも取り入れていきたいと思います。
以上です。ありがとうございました
