Nginx
Nginxとは
Nginx(エンジンエックス)は、世界で最も広く使われている Web サーバーソフトウェアの1つです。静的ファイルの配信が高速なことに加え、[[リバースプロキシ]] や [[ロードバランサ]] としても使える多機能さが特徴で、Web システムの入口に置かれる定番のミドルウェア(OS とアプリの間で働くソフトウェア)です。
大量の同時接続を少ないメモリでさばけるイベント駆動型(接続ごとにプロセスを増やさない方式)のアーキテクチャを採用しており、アクセスの多いサイトでも安定して動作します。
主な役割
| 役割 | 内容 |
|---|---|
| Web サーバー | HTML・画像・CSS などの静的ファイルを [[HTTP]] で配信する |
| リバースプロキシ | リクエストを受け取り、背後のアプリケーションサーバーへ転送する |
| ロードバランサ | 複数のサーバーへリクエストを振り分けて負荷を分散する |
| TLS 終端 | [[HTTPS・TLS]] の暗号化・復号を肩代わりし、証明書を一元管理する |
実務では「Nginx が入口で受けて、背後の Node.js や Python のアプリに渡す」という構成が非常によく使われます。この役割分担は [[Webサーバーとアプリケーションサーバー]] の考え方そのものです。
設定ファイルの基本
Nginx の動作は nginx.conf という設定ファイルで制御します。たとえばリバースプロキシの設定は次のようになります。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
}
}
これは「80番ポートで受けたリクエストを、同じマシンの3000番ポートで動くアプリへ転送する」という意味です。server ブロックと location ブロックの組み合わせが設定の基本単位になります。
初学者向けポイント
- Apache と並ぶ二大 Web サーバー。近年のシェアは Nginx が優勢で、求人・現場での遭遇率も高い
- 設定変更後は
nginx -tで構文チェックしてからリロードするのが安全な運用手順 - 「静的ファイルは Nginx が直接返し、動的な処理だけアプリに渡す」と役割分担させると高速化できる
- Docker の公式イメージが用意されており、手元で気軽に試せる
関連技術とのつながり
- [[リバースプロキシ]] — Nginx の代表的な使い方。アプリの前段に立って中継する
- [[ロードバランサ]] — 複数サーバーへの振り分けも Nginx の設定だけで実現できる
- [[HTTP]] — Nginx が話すプロトコル。ヘッダの付け替えや圧縮も担当する
- [[Webサーバーとアプリケーションサーバー]] — Nginx と背後のアプリの役割分担の考え方
- [[ミドルウェア]] — Nginx は代表的なミドルウェアの1つ
Q: Nginx の説明として正しいのはどれ?
- [x] Web サーバーであり、リバースプロキシやロードバランサとしても使える
- [ ] データベース管理システムの一種である
- [ ] プログラミング言語の一種である
解説: Nginx は静的ファイル配信・リバースプロキシ・ロードバランサなどを担う多機能な Web サーバーソフトウェアです。
Q: Nginx が大量の同時接続を効率よくさばける理由はどれ?
- [ ] 接続ごとに新しいプロセスを起動するから
- [x] イベント駆動型のアーキテクチャを採用しているから
- [ ] すべての通信を暗号化しないから
解説: Nginx は接続ごとにプロセスを増やさないイベント駆動型で、少ないメモリで多くの接続を処理できます。
Q: 設定例の `proxy_pass http://localhost:3000;` が意味するのはどれ?
- [ ] 3000番ポートへのアクセスを拒否する
- [ ] 静的ファイルを3000番ポートで配信する
- [x] 受けたリクエストを localhost の3000番ポートで動くアプリへ転送する
解説: proxy_pass はリバースプロキシの転送先を指定する設定で、背後のアプリケーションへリクエストを渡します。