nginxの全体像
nginx は、クライアントからの HTTP リクエストを受け取り、静的ファイル配信、TLS終端、リダイレクト、リバースプロキシ、アクセス制御などを行う Web サーバーである。
nginxが担当すること
Section titled “nginxが担当すること”nginx は 1 つの機能だけを持つソフトウェアではない。設定によって、複数の役割を持つ。
| 役割 | 何をするか |
|---|---|
| 静的ファイル配信 | HTML、CSS、画像などをファイルシステムから返す |
| TLS終端 | HTTPS 接続を受け、証明書と秘密鍵を使って TLS を処理する |
| リダイレクト | HTTP から HTTPS へ移動させる |
| リバースプロキシ | リクエストを背後のアプリケーションへ転送する |
| アクセス制御 | Basic 認証、IP 制限、PAM 認証などで入口を制御する |
nginx は、クライアントから受け取った HTTP リクエストを内容に応じて処理先へ振り分ける入口になる。
client -> nginx -> listenしているportを選ぶ -> Hostヘッダーからserverを選ぶ -> URIからlocationを選ぶ -> static / redirect / proxy / auth などを実行する -> responseを返すnginx は、まず listen している IP アドレスとポートで接続を受ける。次に server_name などを使って server ブロックを選び、リクエスト URI に応じて location ブロックを選ぶ。
その location の中で、静的ファイルを返すのか、別の URL へリダイレクトするのか、バックエンドへ proxy_pass するのか、認証を要求するのかが決まる。
Debian系の設定ファイル
Section titled “Debian系の設定ファイル”Debian / Ubuntu 系では、主な設定ファイルは次のように分かれる。
| パス | 役割 |
|---|---|
/etc/nginx/nginx.conf |
nginx 全体の設定 |
/etc/nginx/sites-available/ |
サイトごとの設定ファイルを置く場所 |
/etc/nginx/sites-enabled/ |
有効化されたサイト設定へのシンボリックリンク |
/etc/nginx/conf.d/ |
追加設定を置く場所 |
sites-available に設定を書き、sites-enabled へシンボリックリンクを作る構成がよく使われる。ただし、これは Debian / Ubuntu 系のパッケージ構成であり、すべての OS で同じではない。
設定変更時の基本操作
Section titled “設定変更時の基本操作”設定を変更したら、まず構文を確認する。
sudo nginx -t問題がなければ nginx を reload する。
sudo systemctl reload nginxrestart はプロセスを再起動する。設定反映だけなら、通常は reload でよい。
よくある誤解
Section titled “よくある誤解”- nginx が HTTPS にしただけで、バックエンド通信まで暗号化されるとは限らない。
proxy_passは単なる転送ではなく、URI の扱いが書き方で変わる。- nginx が PAM 認証を使う場合でも、nginx 自身が LDAP プロトコルを直接処理しているとは限らない。
- Basic 認証はパスワードを送るため、HTTPS と組み合わせる前提で考える。