Nginx
エンジニアのためのWebチートシート
Nginxは高性能なWebサーバー、リバースプロキシ、ロードバランサーです。 軽量で高い同時接続処理能力を持ち、静的ファイル配信やAPI Gatewayとして広く使われています。 基本コマンド、サーバーブロック、リバースプロキシ、SSL、セキュリティ設定などをチートシートにまとめました。
基本コマンド
| コマンド | 説明 |
|---|---|
| nginx | Nginxを起動します。 |
| nginx -s stop | ワーカープロセスを即時終了します。 |
| nginx -s reload | 設定ファイルを再読み込みします(ダウンタイムなし)。 |
| nginx -t | 設定ファイルの構文チェックを行います。 |
| nginx -v | Nginxのバージョンとビルド情報を表示します。 |
| nginx -V | 設定ファイルのパスとビルドオプションを表示します。 |
| nginx -s reopen | ログファイルを再オープンします(ログローテーション時に使用)。 |
サーバーブロック
基本的なサーバーブロック
特定のドメインとポートでリクエストを受け付ける設定です。
複数ドメイン対応
1つのサーバーブロックで複数のドメインを処理する設定です。
デフォルトサーバー
一致するserver_nameがない場合に処理するデフォルトサーバーです。
ロケーションブロック
マッチング優先順位
| プレフィックス | 説明 | 優先度 |
|---|---|---|
| = /path | URIが完全に一致した場合にマッチします。最も優先度が高い。 | 1 |
| ^~ /path | プレフィックスマッチ後、正規表現の評価をスキップします。 | 2 |
| ~ regex | 正規表現でマッチします。定義順に評価されます。 | 3 |
| ~* regex | 大文字小文字を区別しない正規表現マッチです。 | 3 |
| /path | 最長一致のプレフィックスがマッチします。最も優先度が低い。 | 4 |
locationの使用例
よく使われるlocationパターンの例です。
リバースプロキシ
基本プロキシ設定
バックエンドサーバーへのリクエスト転送の基本設定です。
プロキシヘッダー
バックエンドにクライアント情報を渡すためのヘッダー設定です。
ロードバランシング
複数のバックエンドサーバーへのトラフィック分散設定です。
SSL / TLS
SSL基本設定
HTTPS通信を有効にする基本的なSSL/TLS設定です。
HTTP → HTTPSリダイレクト
HTTPリクエストをHTTPSに自動リダイレクトする設定です。
静的ファイル & キャッシュ
静的ファイル配信
root / aliasディレクティブによる静的ファイルの配信設定です。
Gzip圧縮
レスポンスのGzip圧縮設定です。帯域幅を削減します。
キャッシュヘッダー
ブラウザキャッシュの制御設定です。
セキュリティ & ヘッダー
セキュリティヘッダー
一般的なセキュリティヘッダーの設定です。
レートリミット
リクエストレートの制限設定です。DDoSやブルートフォース攻撃対策に有効です。
IPアクセス制限
特定のIPアドレスからのアクセスを許可または拒否する設定です。
ログ & デバッグ
ログフォーマット
アクセスログのカスタムフォーマット定義です。
条件付きログ
特定の条件でログを記録またはスキップする設定です。
デバッグのヒント
Nginx設定のデバッグに役立つコマンドとテクニックです。
よく使う設定
SPA (Single Page App)
React/Vue/Angularなどのシングルページアプリケーション向け設定です。
CORS設定
クロスオリジンリソース共有の設定です。
WebSocket対応
WebSocket接続のプロキシ設定です。