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

Nginx設定 とは?

最終更新:
💡 入れ子の箱で「どのリクエストをどう扱うか」を書く設計図

Nginxの動作を決める設定ファイルの書き方。Webサーバー、リバースプロキシ、ロードバランサーとしての動きを、ディレクティブとブロックの組み合わせで指定する。

📌 このページのポイント
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の設定ファイルってどんな形をしてるの?
ペンギン先生 ペンギン先生
「名前 値;」の単純なディレクティブと、波かっこで囲むブロックでできているよ。いちばん外側にeventsとhttpがあって、httpの中にserver、serverの中にlocationを入れ子にするんだ。serverでポートやドメイン、locationでURLのパスごとの処理を決めるよ
ひよこ ひよこ
設定ファイルはどこにあるの?
ペンギン先生 ペンギン先生
既定の名前はnginx.confで、場所は/etc/nginxや/usr/local/nginx/confなど、入れ方によって違うよ。DebianやUbuntuのパッケージではsites-availableとsites-enabledに分けて置く慣習があるけど、ほかの配布物ではconf.dを使うこともあるから、まず手元の構成を確認しようね
ひよこ ひよこ
リバースプロキシはどう書くの?
ペンギン先生 ペンギン先生
locationの中にproxy_passで転送先を書くよ。WebSocketを通すときは、UpgradeとConnectionのヘッダーを明示して転送する設定が必要なんだ。古い版ではproxy_http_version 1.1も加えるよ
ひよこ ひよこ
HTTPSの設定で気をつけることは?
ペンギン先生 ペンギン先生
serverでlisten 443 sslと、ssl_certificateとssl_certificate_keyを指定するよ。Nginx 1.23.4以降はssl_protocolsの既定がTLSv1.2とTLSv1.3だけど、古い版では明示して古いTLSを外すといいね。CertbotのNginxプラグインを使えば、証明書の取得と設定、更新の自動化もできるよ
ひよこ ひよこ
おもしろい!ハマりやすいところはある?
ペンギン先生 ペンギン先生
proxy_passの末尾にパス(「/」だけでも)を付けると、locationに一致した部分がそのパスに置き換わる。付けないとリクエストのURIがそのまま渡るから、転送先のパスがずれやすいんだ。SPAならtry_filesで最後にindex.htmlへ回すこと、worker_connectionsには転送先との接続も含まれることも覚えておくといいよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Nginx設定」って出てきたら「serverやlocationのブロックで、Nginxの受け方と転送先を決める設定ファイル」と思えればだいたいOK!
📖 おまけ:英語の意味
「Nginx Configuration」 = Nginx設定
💬 Nginxは「engine x」と読む名前で、Igor Sysoevが最初に開発したWebサーバーだよ

参考資料

← 用語集にもどる