Nginx 変数 100 選:$request_id/$upstream_status/$ssl_protocol ほか即戦力まとめ
Nginx は世界中で広く使われている高性能な Web サーバーおよびリバースプロキシです。その設定ファイルには数多くの変数が用意されており、ログ出力やアクセス制御、リダイレクトなど、さまざまな用途で活用できます。本記事では、実務で即戦力となる Nginx 変数を 100 個厳選し、カテゴリ別に分類して紹介します。
初心者の方でも理解しやすいよう、各変数の役割や使用例を丁寧に解説していきますので、ぜひ最後までご覧ください。
Nginx 変数早見表
本記事で紹介する変数を、カテゴリ別に整理した早見表です。検索や参照にご活用ください。
リクエスト関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 1 | $request | 完全なリクエストライン |
| 2 | $request_method | HTTP メソッド (GET, POST など) |
| 3 | $request_uri | クエリ文字列を含む元のリクエスト URI |
| 4 | $uri | 正規化された現在の URI |
| 5 | $document_uri | $uri のエイリアス |
| 6 | $args | クエリ文字列全体 |
| 7 | $query_string | $args のエイリアス |
| 8 | $arg_name | 特定のクエリパラメータの値 |
| 9 | $is_args | クエリ文字列の有無 (「?」または空文字) |
| 10 | $request_id | 一意なリクエスト識別子 |
| 11 | $request_length | リクエスト全体のバイト数 |
| 12 | $request_time | リクエスト処理時間(秒) |
| 13 | $request_body | リクエストボディの内容 |
| 14 | $request_body_file | リクエストボディが保存されたファイルパス |
| 15 | $content_length | Content-Length ヘッダーの値 |
| 16 | $content_type | Content-Type ヘッダーの値 |
HTTP ヘッダー関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 17 | $http_name | 任意の HTTP リクエストヘッダー |
| 18 | $http_host | Host ヘッダーの値 |
| 19 | $http_user_agent | User-Agent ヘッダーの値 |
| 20 | $http_referer | Referer ヘッダーの値 |
| 21 | $http_cookie | Cookie ヘッダーの値 |
| 22 | $http_x_forwarded_for | X-Forwarded-For ヘッダーの値 |
| 23 | $http_x_real_ip | X-Real-IP ヘッダーの値 |
| 24 | $http_accept | Accept ヘッダーの値 |
| 25 | $http_accept_language | Accept-Language ヘッダーの値 |
| 26 | $http_accept_encoding | Accept-Encoding ヘッダーの値 |
| 27 | $http_connection | Connection ヘッダーの値 |
| 28 | $http_cache_control | Cache-Control ヘッダーの値 |
| 29 | $cookie_name | 特定の Cookie の値 |
レスポンス関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 30 | $status | HTTP レスポンスステータスコード |
| 31 | $body_bytes_sent | クライアントに送信したボディのバイト数 |
| 32 | $bytes_sent | クライアントに送信した総バイト数 |
| 33 | $sent_http_name | 任意の HTTP レスポンスヘッダー |
| 34 | $sent_http_content_type | Content-Type レスポンスヘッダー |
| 35 | $sent_http_location | Location レスポンスヘッダー |
| 36 | $sent_http_cache_control | Cache-Control レスポンスヘッダー |
アップストリーム関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 37 | $upstream_status | アップストリームのステータスコード |
| 38 | $upstream_addr | アップストリームサーバーのアドレス |
| 39 | $upstream_response_time | アップストリームからのレスポンス時間 |
| 40 | $upstream_connect_time | アップストリームへの接続時間 |
| 41 | $upstream_header_time | アップストリームからヘッダー受信までの時間 |
| 42 | $upstream_bytes_received | アップストリームから受信したバイト数 |
| 43 | $upstream_bytes_sent | アップストリームに送信したバイト数 |
| 44 | $upstream_cache_status | キャッシュのステータス |
| 45 | $upstream_http_name | アップストリームからの HTTP ヘッダー |
SSL/TLS 関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 46 | $ssl_protocol | SSL/TLS プロトコルのバージョン |
| 47 | $ssl_cipher | 使用中の暗号化方式 |
| 48 | $ssl_session_id | SSL セッション ID |
| 49 | $ssl_session_reused | SSL セッションの再利用 (r または .) |
| 50 | $ssl_server_name | SNI で指定されたサーバー名 |
| 51 | $ssl_client_cert | クライアント証明書 |
| 52 | $ssl_client_s_dn | クライアント証明書の Subject DN |
| 53 | $ssl_client_i_dn | クライアント証明書の Issuer DN |
| 54 | $ssl_client_serial | クライアント証明書のシリアル番号 |
| 55 | $ssl_client_verify | クライアント証明書の検証結果 |
| 56 | $ssl_curves | サポートされている楕円曲線 |
接続・ネットワーク関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 57 | $remote_addr | クライアントの IP アドレス |
| 58 | $remote_port | クライアントのポート番号 |
| 59 | $remote_user | Basic 認証のユーザー名 |
| 60 | $server_addr | リクエストを受け取ったサーバーの IP アドレス |
| 61 | $server_port | リクエストを受け取ったサーバーのポート番号 |
| 62 | $server_protocol | リクエストプロトコル (HTTP/1.1 など) |
| 63 | $scheme | リクエストのスキーム (http または https) |
| 64 | $https | HTTPS 接続の場合は「on」、それ以外は空文字 |
| 65 | $binary_remote_addr | バイナリ形式のクライアント IP アドレス |
| 66 | $connection | 接続のシリアル番号 |
| 67 | $connection_requests | 現在の接続で処理されたリクエスト数 |
| 68 | $proxy_protocol_addr | PROXY プロトコルのクライアント IP |
| 69 | $proxy_protocol_port | PROXY プロトコルのクライアントポート |
| 70 | $realip_remote_addr | real_ip モジュール適用前の IP アドレス |
| 71 | $realip_remote_port | real_ip モジュール適用前のポート |
サーバー・ホスト関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 72 | $host | リクエストのホスト名 |
| 73 | $hostname | サーバーのホスト名 |
| 74 | $server_name | リクエストを処理した server ブロックのサーバー名 |
| 75 | $nginx_version | Nginx のバージョン |
| 76 | $pid | ワーカープロセスの PID |
時刻・日付関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 77 | $time_local | ローカルタイムゾーンでの時刻 |
| 78 | $time_iso8601 | ISO 8601 形式の時刻 |
| 79 | $msec | Unix エポックからの秒数(マイクロ秒精度) |
ファイル・パス関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 80 | $document_root | 現在のリクエストの root ディレクティブの値 |
| 81 | $realpath_root | root の実際のパス(シンボリックリンク解決後) |
| 82 | $request_filename | リクエストされたファイルのフルパス |
Limit 関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 83 | $limit_rate | レスポンスの送信レート制限 |
| 84 | $limit_conn_status | 接続数制限のステータス |
| 85 | $limit_req_status | リクエスト数制限のステータス |
FastCGI 関連変数
| # | 変数名 | 説明 |
|---|---|---|
| 86 | $fastcgi_script_name | FastCGI スクリプト名 |
| 87 | $fastcgi_path_info | FastCGI PATH_INFO |
その他の変数
| # | 変数名 | 説明 |
|---|---|---|
| 88 | $pipe | パイプライン接続の場合「p」、それ以外は「.」 |
| 89 | $gzip_ratio | gzip 圧縮率 |
| 90 | $tcpinfo_rtt | TCP の RTT(ラウンドトリップタイム) |
| 91 | $tcpinfo_rttvar | TCP の RTT 分散 |
| 92 | $tcpinfo_snd_cwnd | TCP の送信輻輳ウィンドウ |
| 93 | $tcpinfo_rcv_space | TCP の受信ウィンドウサイズ |
| 94 | $ancient_browser | 古いブラウザの場合に設定される値 |
| 95 | $invalid_referer | 無効な Referer の場合に設定される値 |
| 96 | $memcached_key | memcached のキー |
| 97 | $redis_key | redis のキー |
| 98 | $slice_range | スライスモジュールのレンジ |
| 99 | $http2 | HTTP/2 接続の場合「h2」、それ以外は空文字 |
| 100 | $http3 | HTTP/3 接続の場合「h3」、それ以外は空文字 |
背景
Nginx は 2004 年に Igor Sysoev 氏によって開発されて以来、Web サーバーおよびリバースプロキシとして世界中で利用されてきました。その人気の理由は、高いパフォーマンス、柔軟な設定、そして豊富な機能にあります。
Nginx の設定ファイルでは、さまざまなコンテキスト(http、server、location など)で変数を使用できます。これらの変数は、実行時にリクエストやサーバーの状態に応じて動的に値が設定され、ログ記録、条件分岐、リダイレクト、ヘッダー操作など、多岐にわたる用途で活用されています。
以下の図は、Nginx がリクエストを処理する際に変数がどのように活用されるかを示したものです。
mermaidflowchart TB
client["クライアント"] -->|HTTP リクエスト| nginx["Nginx サーバー"]
nginx -->|変数の評価| vars["変数の取得<br/>$remote_addr<br/>$request_uri<br/>$http_user_agent"]
vars -->|条件判定| logic["設定ロジック<br/>アクセス制御<br/>リダイレクト<br/>ヘッダー操作"]
logic -->|プロキシ| upstream["アップストリーム<br/>アプリケーションサーバー"]
upstream -->|レスポンス| nginx
nginx -->|ログ出力| log["ログファイル<br/>変数を記録"]
nginx -->|HTTP レスポンス| client
この図から、Nginx がリクエストを受け取った後、様々な変数を取得・評価し、設定に基づいた処理を行い、最終的にログとして記録していることがわかります。
変数の活用により、運用担当者は詳細なアクセスログを取得し、トラブルシューティングやパフォーマンス分析を効率的に行えるようになります。
課題
Nginx の変数は非常に多く、公式ドキュメントを読んでもすべてを把握するのは容易ではありません。特に以下のような課題があります。
課題 1:変数の数が多く、どれを使えばよいかわからない
Nginx には 100 を超える変数が存在し、それぞれが異なる目的や用途を持っています。初心者の方にとっては、どの変数がどのような場面で役立つのか判断するのが難しいでしょう。
課題 2:カテゴリ分けされていないため検索しにくい
公式ドキュメントでは、変数がモジュールごとに分散して記載されており、体系的に整理されていません。そのため、必要な変数を見つけるために複数のページを参照する必要があります。
課題 3:実際の使用例が少ない
変数の説明はあっても、具体的にどのように設定ファイルに記述すれば良いのか、実践的な例が不足していることがあります。
以下の図は、Nginx 変数の学習における課題を示しています。
mermaidflowchart LR
engineer["エンジニア"] -->|学習開始| doc["公式ドキュメント"]
doc -->|変数が多い| confusion1["課題1<br/>どれを使う?"]
doc -->|分散している| confusion2["課題2<br/>検索しにくい"]
doc -->|例が少ない| confusion3["課題3<br/>実装イメージが<br/>わかない"]
confusion1 --> frustration["学習の<br/>挫折リスク"]
confusion2 --> frustration
confusion3 --> frustration
これらの課題を解決するためには、変数を体系的に整理し、カテゴリ別に分類し、実践的な使用例とともに紹介することが重要です。
解決策
本記事では、上記の課題を解決するために、以下のアプローチを採用しました。
解決策 1:実務で役立つ 100 個の変数を厳選
数多くある Nginx 変数の中から、実際の開発・運用現場で頻繁に使用される重要な変数を 100 個厳選しました。これにより、学習の優先順位が明確になります。
解決策 2:カテゴリ別に分類して整理
変数を以下のカテゴリに分類し、目的に応じて必要な変数を素早く見つけられるようにしました。
- リクエスト関連変数
- HTTP ヘッダー関連変数
- レスポンス関連変数
- アップストリーム関連変数
- SSL/TLS 関連変数
- 接続・ネットワーク関連変数
- サーバー・ホスト関連変数
- 時刻・日付関連変数
- ファイル・パス関連変数
- Limit 関連変数
- FastCGI 関連変数
- その他の変数
解決策 3:実践的な使用例を豊富に提供
各カテゴリにおいて、実際の設定ファイルでの使用例を示し、どのように記述すれば良いのかを具体的に解説します。
以下の図は、本記事によって課題がどのように解決されるかを示しています。
mermaidflowchart LR
article["本記事"] -->|厳選100個| sol1["解決策1<br/>優先順位が明確"]
article -->|カテゴリ分類| sol2["解決策2<br/>検索しやすい"]
article -->|豊富な例| sol3["解決策3<br/>実装イメージが<br/>つかめる"]
sol1 --> success["効率的な学習<br/>実務での活用"]
sol2 --> success
sol3 --> success
これにより、エンジニアの皆さんが Nginx 変数を効率的に学習し、実務で即座に活用できるようになります。
具体例
ここからは、カテゴリ別に Nginx 変数の具体的な使用例を紹介します。実際の設定ファイルに記述する際の参考にしてください。
リクエスト関連変数の活用
リクエスト関連変数は、クライアントからのリクエスト情報を取得する際に使用します。
$request_id でリクエストを追跡する
$request_id は、各リクエストに一意の識別子を付与する変数です。マイクロサービス環境でのトレーシングに便利です。
nginx# アクセスログに request_id を記録
log_format trace '$remote_addr - $request_id - [$time_local] '
'"$request" $status $body_bytes_sent';
access_log /var/log/nginx/access.log trace;
この設定により、各リクエストに固有の ID が付与され、ログから特定のリクエストを追跡できます。
$request_method でメソッドを判定する
HTTP メソッドに応じて処理を分岐させることができます。
nginxlocation /api {
# POST リクエストのみ許可
if ($request_method !~ ^(POST)$) {
return 405;
}
proxy_pass http://backend;
}
この例では、POST メソッド以外のリクエストには「405 Method Not Allowed」を返します。
$request_uri と $uri の違い
$request_uri は元のリクエスト URI(クエリ文字列を含む)を保持し、$uri は正規化された現在の URI を表します。
nginxlocation /redirect {
# 元の URI をログに記録
access_log /var/log/nginx/redirect.log;
add_header X-Original-URI $request_uri;
add_header X-Current-URI $uri;
return 301 /new-path;
}
このように、リダイレクト処理で元の URI と現在の URI を区別して扱えます。
$args と $arg_name でクエリパラメータを取得
クエリ文字列全体やパラメータ個別にアクセスできます。
nginxlocation /search {
# クエリパラメータ「q」の値を取得
set $search_query $arg_q;
# パラメータがない場合はエラー
if ($search_query = "") {
return 400 "Search query is required";
}
proxy_pass http://search_backend;
}
この設定では、/search?q=nginx のように指定されたクエリパラメータを取得し、バックエンドに転送します。
HTTP ヘッダー関連変数の活用
HTTP ヘッダーの情報を取得し、アクセス制御やログ記録に活用できます。
$http_user_agent でユーザーエージェントを判定
ブラウザやボットを判別して処理を変更できます。
nginxlocation / {
# ボットからのアクセスを制限
if ($http_user_agent ~* (bot|crawler|spider)) {
return 403;
}
proxy_pass http://backend;
}
この例では、User-Agent に「bot」「crawler」「spider」が含まれる場合、アクセスを拒否します。
$http_x_forwarded_for で実際の IP を取得
リバースプロキシ環境では、X-Forwarded-For ヘッダーからクライアントの実際の IP アドレスを取得します。
nginx# リアル IP をログに記録
log_format forwarded '$http_x_forwarded_for - $remote_addr - [$time_local] '
'"$request" $status';
access_log /var/log/nginx/forwarded.log forwarded;
ロードバランサーや CDN を経由する場合、$remote_addr だけでは直前のプロキシの IP しか取得できないため、この変数が重要です。
$cookie_name で特定の Cookie を取得
Cookie の値を取得して、セッション管理やパーソナライゼーションに利用できます。
nginxlocation /dashboard {
# session_id Cookie が存在しない場合はログインページへ
if ($cookie_session_id = "") {
return 302 /login;
}
proxy_pass http://backend;
proxy_set_header X-Session-ID $cookie_session_id;
}
この設定により、未認証ユーザーをログインページにリダイレクトします。
レスポンス関連変数の活用
レスポンスのステータスやバイト数を記録し、パフォーマンス分析に役立てます。
$status と $body_bytes_sent でレスポンス情報を記録
nginx# 詳細なレスポンスログフォーマット
log_format detailed '$remote_addr - [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" rt=$request_time';
access_log /var/log/nginx/detailed.log detailed;
このログフォーマットにより、ステータスコード、送信バイト数、リクエスト時間を一元的に記録できます。
以下の図は、レスポンス変数を活用したロギングの流れを示しています。
mermaidsequenceDiagram
participant Client as クライアント
participant Nginx as Nginx
participant Backend as バックエンド
participant Log as ログファイル
Client->>Nginx: HTTP リクエスト
Nginx->>Backend: プロキシ転送
Backend->>Nginx: レスポンス
Nginx->>Log: $status, $body_bytes_sent,<br/>$request_time を記録
Nginx->>Client: HTTP レスポンス
このように、レスポンスを返す際に重要な指標をログに記録することで、後から分析が可能になります。
アップストリーム関連変数の活用
リバースプロキシとして動作する際、バックエンドサーバーの状態を監視できます。
$upstream_status でバックエンドのステータスを記録
nginx# アップストリームのステータスをログに記録
log_format upstream '$remote_addr - [$time_local] "$request" '
'$status (upstream: $upstream_status) '
'time=$request_time upstream_time=$upstream_response_time';
access_log /var/log/nginx/upstream.log upstream;
この設定により、Nginx のステータスコードとバックエンドのステータスコードを両方記録できます。バックエンドが 500 エラーを返した場合でも、それを明確に把握できます。
$upstream_response_time でパフォーマンス測定
バックエンドのレスポンス時間を測定し、ボトルネックを特定します。
nginxlocation /api {
proxy_pass http://backend;
# レスポンス時間をヘッダーに追加(開発環境のみ)
add_header X-Upstream-Response-Time $upstream_response_time;
add_header X-Request-Time $request_time;
}
この設定により、クライアント側でレスポンスヘッダーを確認することで、パフォーマンスを測定できます。
$upstream_cache_status でキャッシュ状態を確認
プロキシキャッシュの動作状況を把握できます。
nginxproxy_cache my_cache;
proxy_cache_valid 200 10m;
location /cached {
proxy_pass http://backend;
# キャッシュステータスをヘッダーに追加
add_header X-Cache-Status $upstream_cache_status;
}
$upstream_cache_status は以下の値を取ります:
- HIT: キャッシュからレスポンスを返した
- MISS: キャッシュがなく、アップストリームから取得
- BYPASS: キャッシュをバイパス
- EXPIRED: キャッシュが期限切れ
- STALE: 古いキャッシュを返した
- UPDATING: キャッシュを更新中
- REVALIDATED: キャッシュを再検証
SSL/TLS 関連変数の活用
HTTPS 接続の詳細情報を取得し、セキュリティ監視に活用します。
$ssl_protocol と $ssl_cipher で暗号化情報を記録
使用されている TLS プロトコルと暗号化方式をログに記録します。
nginx# SSL 詳細ログフォーマット
log_format ssl_detailed '$remote_addr - [$time_local] "$request" '
'$status ssl_protocol=$ssl_protocol '
'ssl_cipher=$ssl_cipher '
'ssl_session_reused=$ssl_session_reused';
access_log /var/log/nginx/ssl.log ssl_detailed;
このログから、古い TLS バージョン(TLS 1.0/1.1)を使用しているクライアントを特定し、セキュリティポリシーの見直しに役立てられます。
$ssl_client_verify でクライアント証明書認証
相互 TLS 認証を実装する際に使用します。
nginxserver {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client optional;
location / {
# クライアント証明書の検証結果をチェック
if ($ssl_client_verify != SUCCESS) {
return 403 "Client certificate verification failed";
}
# 証明書の Subject DN をバックエンドに渡す
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_pass http://backend;
}
}
この設定により、有効なクライアント証明書を持つユーザーのみがアクセスできるようになります。
接続・ネットワーク関連変数の活用
クライアントの接続情報を取得し、アクセス制御やログ記録に使用します。
$remote_addr と $realip_remote_addr の使い分け
リバースプロキシ環境で実際のクライアント IP を取得します。
nginx# real_ip モジュールの設定
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 172.16.0.0/12;
real_ip_header X-Forwarded-For;
# ログフォーマット
log_format realip 'original=$realip_remote_addr proxy=$remote_addr '
'[$time_local] "$request" $status';
access_log /var/log/nginx/realip.log realip;
この設定により、プロキシ経由でも元のクライアント IP を正しく記録できます。
$connection_requests で接続の再利用を確認
HTTP/1.1 のキープアライブによる接続再利用を監視します。
nginxlog_format connection '$remote_addr connection=$connection '
'requests=$connection_requests '
'[$time_local] "$request"';
access_log /var/log/nginx/connection.log connection;
$connection_requests の値が大きい場合、同一接続で複数のリクエストが処理されており、効率的な通信が行われていることがわかります。
時刻・日付関連変数の活用
タイムスタンプをさまざまな形式で記録できます。
$time_iso8601 で ISO 形式の時刻を記録
nginxlog_format iso8601 '$remote_addr - $time_iso8601 "$request" $status';
access_log /var/log/nginx/iso8601.log iso8601;
ISO 8601 形式(2025-11-21T10:30:45+09:00)は国際標準であり、ログ解析ツールとの連携に適しています。
$msec で高精度なタイムスタンプを取得
マイクロ秒精度のタイムスタンプを記録し、パフォーマンス測定の精度を高めます。
nginxlog_format precise '$msec $remote_addr "$request" $status rt=$request_time';
access_log /var/log/nginx/precise.log precise;
この形式は、リクエストの処理順序を厳密に追跡する必要がある場合に有効です。
ファイル・パス関連変数の活用
ファイルシステム上のパスを扱う際に使用します。
$document_root と $request_filename でファイルパスを確認
nginxlocation /files {
root /var/www/html;
# ファイルが存在しない場合はカスタムエラーページ
if (!-f $request_filename) {
return 404 "File not found: $uri";
}
# デバッグ用ヘッダー(開発環境のみ)
add_header X-Document-Root $document_root;
add_header X-Request-Filename $request_filename;
}
この設定により、ファイルの実際のパスを確認しながらデバッグできます。
Limit 関連変数の活用
レート制限の状態を監視します。
$limit_req_status でレート制限の動作を確認
nginx# レート制限の設定
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
location /api {
limit_req zone=mylimit burst=20 nodelay;
limit_req_status 429;
# レート制限のログ
access_log /var/log/nginx/ratelimit.log;
proxy_pass http://backend;
}
# レート制限時のカスタムエラーページ
error_page 429 /rate_limit.html;
この設定により、1 秒あたり 10 リクエストを超えるとレート制限が発動し、$limit_req_status が「REJECTED」などの値を取ります。
その他の便利な変数の活用
$http2 と $http3 でプロトコルバージョンを判定
HTTP/2 や HTTP/3 の使用状況を把握します。
nginxlog_format protocol '$remote_addr http2=$http2 http3=$http3 '
'[$time_local] "$request" $status';
access_log /var/log/nginx/protocol.log protocol;
location / {
# HTTP/2 または HTTP/3 接続にはヘッダーを追加
if ($http2) {
add_header X-Protocol "HTTP/2";
}
if ($http3) {
add_header X-Protocol "HTTP/3";
}
proxy_pass http://backend;
}
この設定により、クライアントがどのプロトコルバージョンを使用しているかを追跡できます。
$gzip_ratio で圧縮率を監視
gzip 圧縮の効果を測定します。
nginxgzip on;
gzip_types text/plain text/css application/json;
log_format gzip_log '$remote_addr "$request" $status '
'bytes_sent=$bytes_sent '
'body_bytes_sent=$body_bytes_sent '
'gzip_ratio=$gzip_ratio';
access_log /var/log/nginx/gzip.log gzip_log;
$gzip_ratio は圧縮率を表し、値が大きいほど圧縮効果が高いことを示します。
以下の図は、変数を活用したログ分析フローを示しています。
mermaidflowchart TB
requests["リクエスト<br/>処理"] -->|変数取得| vars["各種変数<br/>$status<br/>$request_time<br/>$upstream_status<br/>$gzip_ratio"]
vars -->|ログ出力| logfile["ログファイル<br/>/var/log/nginx/"]
logfile -->|解析| analysis["ログ解析ツール<br/>GoAccess<br/>ELK Stack<br/>Datadog"]
analysis -->|可視化| dashboard["ダッシュボード<br/>パフォーマンス監視<br/>エラー追跡<br/>トラフィック分析"]
dashboard -->|改善| optimize["最適化<br/>ボトルネック解消<br/>セキュリティ強化"]
この図から、Nginx 変数を活用したログが分析・可視化され、最終的にサービスの最適化につながる流れがわかります。
まとめ
本記事では、Nginx の実務で即戦力となる変数 100 個を厳選し、カテゴリ別に分類して紹介しました。
記事のポイント:
- 早見表の提供: カテゴリ別に整理された早見表により、必要な変数を素早く見つけられます
- 体系的な分類: リクエスト、レスポンス、アップストリーム、SSL/TLS など、12 のカテゴリに分類しました
- 実践的な使用例: 各変数の具体的な設定例を豊富に提供し、すぐに実装できる内容になっています
- 図解による理解: Mermaid 図を活用し、変数の活用フローを視覚的に示しました
主要な変数の使い分け:
| 用途 | 推奨変数 |
|---|---|
| リクエスト追跡 | $request_id |
| クライアント IP 取得 | $remote_addr, $http_x_forwarded_for |
| レスポンス監視 | $status, $body_bytes_sent, $request_time |
| バックエンド監視 | $upstream_status, $upstream_response_time |
| セキュリティ監視 | $ssl_protocol, $ssl_cipher, $ssl_client_verify |
| キャッシュ監視 | $upstream_cache_status |
| プロトコル判定 | $http2, $http3, $scheme |
Nginx の変数を適切に活用することで、詳細なログ記録、効果的なアクセス制御、パフォーマンスの最適化が実現できます。
本記事で紹介した変数と使用例を参考に、ぜひ皆さんの環境でも活用してみてください。運用の効率化やトラブルシューティングの迅速化に大きく貢献するはずです。
最後までお読みいただき、ありがとうございました。
関連リンク
articleNginx 変数 100 選:$request_id/$upstream_status/$ssl_protocol ほか即戦力まとめ
articleNginx 画像最適化環境の構築:image_filter モジュールでリサイズ/WebP 変換
articleNginx microcaching vs 上流キャッシュ(Varnish/Redis)比較:TTFB と整合性の最適解
articleNginx “upstream prematurely closed connection” の原因切り分けと対処
articleNginx Worker とイベントループ徹底解説:epoll/kqueue が高速化を生む理由
articleNginx ログ集中管理:Fluent Bit/Loki/Elasticsearch 連携とログサンプリング戦略
articleNext.js を Bun で動かす開発環境:起動速度・互換性・落とし穴
articleObsidian Properties 速見表:型・表示名・テンプレ連携の実例カタログ
articleNuxt useHead/useSeoMeta 定番スニペット集:OGP/構造化データ/国際化メタ
articleMermaid で描ける図の種類カタログ:flowchart/class/state/journey/timeline ほか完全整理
articleMCP サーバーを活用した AI チャットボット構築:実用的な事例と実装
articleNginx 変数 100 選:$request_id/$upstream_status/$ssl_protocol ほか即戦力まとめ
blogiPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
blogGoogleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
blog【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
blogGoogleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
blogPixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
blogフロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
review今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
reviewついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
review愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
review週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
review新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
review科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来