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 はリバースプロキシの転送先を指定する設定で、背後のアプリケーションへリクエストを渡します。