Nginx(エンジンエックス)は、Webサーバーとしても リバースプロキシ/ロードバランサーとしても使える定番ソフトウェアです。アプリの前に一枚置く「入口」としての採用が特に多く、Webアプリや API の構成図で頻繁に登場します。
まず押さえたいポイント
- 大量の同時接続に強い(イベント駆動で、接続ごとにプロセスを作らない設計)
- 静的ファイルの配信が速いので、画像やCSSは Nginx に任せる構成が定番
- TLS終端(HTTPSの復号)を前段でまとめられる
- 設定は1か所のファイルに集約する方式
近い用語との違い
Apache HTTP Server との比較が定番です。最大の違いは接続の捌き方で、Nginxはイベント駆動(少ないプロセスで大量接続)、Apacheは接続ごとにプロセス/スレッドを割り当てるのが基本です。そのため同時接続が多い場面ではNginxが有利とされます。もう一つ大きいのが、Apacheの .htaccess に相当する「ディレクトリごとの設定ファイル」がNginxには無い点で、共有レンタルサーバーでApacheが好まれる理由にもなっています。
実務で見るポイント
前段に置くと便利な反面、設定を見る場所が増えます。よくハマるのはアップロードサイズの上限、タイムアウト、WebSocketの通し方、転送されるヘッダーで、「アプリ側は正しいのに動かない」ときは前段を疑うのが定石です。役割分担の考え方は リバースプロキシとは(Nginx・Apache) で整理しています。
とくに見落とされやすいのがアクセス元IPの扱いです。前段を挟むと、アプリから見た接続元はすべて Nginx のIPになります。そのままではログもアクセス制限も機能しなくなるため、本来のIPを X-Forwarded-For などのヘッダーで渡し、アプリ側でそれを信頼する設定が必要になります。ログイン制限やレート制限を入れているサイトでは必ず確認すべき点です。