【えんじんえっくすせってい】

Nginx設定 とは?

💡 Webサーバーの動作を「設定ファイル1つ」でコントロール
📌 このページのポイント
Nginx設定ファイルの構造 nginx.conf(メインコンテキスト) events { } worker_connections 1024; http { } server { } listen 80; server_name example.com; location / { } proxy_pass http://backend; upstream backend { } server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; 参照
Nginx設定ファイルの構造イメージ
ひよこ ひよこ

基本的な設定の構造は?

ペンギン先生 ペンギン先生

nginx.confはブロック構造。httpブロックの中にserverブロック(仮想ホスト)、その中にlocationブロック(URLパスごとの設定)をネストする。serverブロックでドメインとポートを指定し、locationでパスごとにプロキシ先や静的ファイルのルートを設定。sites-available/sites-enabledパターンで仮想ホストごとにファイルを分けるのが一般的だよ

ひよこ ひよこ

リバースプロキシの設定は?

ペンギン先生 ペンギン先生

locationブロック内でproxy_passディレクティブを書くだけ。location /api/ { proxy_pass http://backend:3000/; } のように。ヘッダー転送(proxy_set_header X-Real-IP $remote_addr;)やWebSocket対応(Upgrade/Connectionヘッダー)も重要。proxy_cache で応答をキャッシュすることもできるよ

ひよこ ひよこ

SSL/TLS設定は?

ペンギン先生 ペンギン先生

serverブロックでlisten 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem;を指定。Let's Encryptの証明書はCertbotプラグインで自動設定・更新できる。ssl_protocols TLSv1.2 TLSv1.3;でTLS 1.0/1.1を無効化して、ssl_ciphersで安全な暗号スイートを指定するのがベストプラクティスだよ

ひよこ ひよこ

おもしろい!よくある設定ミスは?

ペンギン先生 ペンギン先生

①proxy_passの末尾スラッシュの有無でパスの書き換えが変わる(超ハマりやすい)、②try_files $uri $uri/ /index.html;を忘れてSPAの直接URL遷移が404になる、③worker_connectionsが小さすぎて同時接続数が頭打ち、④バッファサイズが小さくて大きなヘッダーで502エラー。nginx -tで構文チェックしてからreloadする癖をつけようね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Nginx設定」って出てきたら「NginxWebサーバー動作を定義する設定ファイル」と思えればだいたいOK!
📖 おまけ:英語の意味
「Nginx Configuration」 = Nginx設定
💬 Nginxはengine xの略。ロシアのIgor Sysoevが開発した高性能Webサーバーだよ
← 用語集にもどる