Nginxの設定ファイル入門|よく使うディレクティブまとめ

インフラ・クラウド

Nginxは、Webサーバー・リバースプロキシ・ロードバランサとして広く使われるオープンソースソフトウェアです。設定ファイル(nginx.conf)の理解が運用の第一歩になります。本記事では、Nginxでよく使うディレクティブをまとめて解説します。

Nginx設定ファイルの基本構造

  • main:全体設定(workerプロセス数等)
  • events:接続イベント関連
  • http:HTTP関連の共通設定
  • server:仮想ホスト
  • location:URLパスごとの挙動

最小構成の例

events { worker_connections 1024; }

http {
  include mime.types;
  default_type application/octet-stream;

  server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    location / {
      try_files $uri $uri/ /index.html;
    }
  }
}

よく使うディレクティブ

listen / server_name

受け付けるポートとホスト名を指定。複数並べて仮想ホストを構築できます。

root / alias

静的ファイルの配信ルート。rootはlocationパスを連結、aliasはlocationパスを置き換える。挙動の違いに注意。

proxy_pass

location /api/ {
  proxy_pass http://backend:3000/;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
}

upstreamでロードバランス

upstream app {
  server app1:3000;
  server app2:3000 weight=2;
}
server {
  location / {
    proxy_pass http://app;
  }
}

gzip / brotli

gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1024;

キャッシュ設定

location ~* \.(css|js|png|jpg|webp)$ {
  expires 1y;
  add_header Cache-Control "public, immutable";
}

SSL/TLS

server {
  listen 443 ssl http2;
  ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  ssl_protocols TLSv1.2 TLSv1.3;
}

運用Tips

  • 変更後は nginx -t で構文チェック、nginx -s reload で反映
  • アクセスログは log_format でJSON化するとSIEM連携が楽
  • rate limit(limit_req)でDDoS基本対策
  • HTTP/2・HTTP/3対応で高速化

まとめ

Nginxの基本はserver + location + proxy_passです。静的配信・SSL・リバースプロキシ・キャッシュの4要素を押さえれば、ほとんどの用途で運用できます。クラウド時代でも依然として、もっとも汎用的なエッジ製品の一つです。