nginx

nginx で使える環境変数一覧[抜粋]

こんにちは、 @FoxBoxsnet です。

今日は最近開発が大詰めになってきたnginxのリバースプロキシのlog設定でnginxが吐ける変数についていちいち調べるのが大変になったので作成しました。

間違い、修正などあれば教えて頂けると助かります。

項目 記載なしは公式Wikiに記載がありませんが、ソースコードで確認した環境変数になります。

私が使用しているmoduleに絞って記載していますのですべてではありません。

$ nginx -V

nginx version: nginx/1.15.8
built by gcc 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)
built with OpenSSL 1.1.0g 2 Nov 2017

$ nginx -V 2>&1 | sed -e 's/\s/\n/g' | grep -e '--with-' | grep -v -e '--with-cc-opt' -e '--with-ld-opt'
--with-compat
--with-file-aio
--with-threads
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_flv_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_mp4_module
--with-http_random_index_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-mail
--with-mail_ssl_module
--with-stream
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module

Software
Version

nginx
1.15.8


variables

各バージョンで追加された変数 (variables) チャレンジログより

version
date
log name
module
Description

1.13.10
2018-03-20
ssl_preread_alpn_protocols
ngx_stream_ssl_preread_module
ALPNを介してクライアントによってアドバタイズされたプロトコルのリスト

1.13.5
2017-09-05
ssl_client_escaped_cert
ngx_http_ssl_module
確立されたSSL接続のクライアント証明書をPEM形式(urlencoded)

1.11.7
2016-12-13
ssl_ciphers
ngx_http_ssl_module
クライアントがサポートしている暗号のリスト

1.11.7
2016-12-13
ssl_curves
ngx_http_ssl_module
クライアントによってサポートされている曲線のリスト

1.11.7
2016-12-13
ssl_client_v_start
ngx_http_ssl_module
クライアント証明書の開始日

1.11.7
2016-12-13
ssl_client_v_end
ngx_http_ssl_module
クライアント証明書の終了日

1.11.7
2016-12-13
ssl_client_v_remain
ngx_http_ssl_module
クライアント証明書が期限切れになるまでの日数

1.11.4
2016-09-13
bytes_received
ngx_stream_core_module
クライアントから受信したバイト数

1.11.4
2016-09-13
session_time
ngx_stream_upstream_module
秒単位のセッション期間

1.11.4
2016-09-13
protocol
ngx_stream_core_module
クライアントとの通信に使用されるプロトコル:TCPまたはUDP

1.11.4
2016-09-13
status
ngx_stream_core_module
セッションステータス

1.11.4
2016-09-13
upstream_addr
ngx_stream_upstream_module
IPアドレスとポート

1.11.4
2016-09-13
upstream_bytes_sent
ngx_stream_upstream_module
upstream サーバーに送信されたバイト数

1.11.4
2016-09-13
upstream_bytes_received
ngx_stream_upstream_module
upstream サーバーから受信したバイト数

1.11.4
2016-09-13
upstream_connect_time
ngx_stream_upstream_module
upstream サーバーに接続する時間

1.11.4
2016-09-13
upstream_first_byte_time
ngx_stream_upstream_module
データの最初のバイトを受信する時間

1.11.4
2016-09-13
upstream_session_time
ngx_stream_upstream_module
秒単位のセッション期間

1.11.0
2016-03-24
request_id
ngx_http_core_module
ランダムな16バイトから生成された16進数の固有の要求ID

1.11.0
2016-03-24
proxy_protocol_port
ngx_http_core_module
PROXYプロトコルヘッダからのクライアントポート、そうでなければ空文字列

1.11.0
2016-03-24
realip_remote_port
ngx_http_realip_module
オリジナルのクライアントポート

1.9.7
2015-11-17
realip_remote_addr
ngx_http_realip_module
オリジナルのクライアントアドレス

1.9.1
2015-05-26
upstream_connect_time
ngx_http_upstream_module
upstream との接続を確立するのにかかる時間

1.7.10
2015-02-10
upstream_header_time
ngx_http_upstream_module
upstream からの応答ヘッダーの受信にかかる時間

1.7.1
2014-05-27
ssl_client_fingerprint
ngx_http_ssl_module
確立されたSSL接続のクライアント証明書のSHA1フィンガープリントを返します

1.7.1
2014-05-27
upstream_cookie_name

ngx_http_upstream_module
“Set-Cookie” レスポンスヘッダフィールドで上流のサーバから送信された指定された名前のクッキー

1.7.0
2014-04-24
ssl_server_name
ngx_http_ssl_module
SNIを介して要求されたサーバー名を返します

1.5.12
2014-03-18
proxy_protocol_addr
ngx_http_core_module
PROXYプロトコルヘッダからのクライアントアドレス、そうでなければ空文字列

1.5.11
2014-03-04
ssl_session_reused
ngx_http_ssl_module
SSLセッションが再利用された場合は “r” を、そうでなければ “.” を返します

1.3.15
2013-05-05
connections_waiting
ngx_http_stub_status_module
要求を待機しているアイドル状態のクライアント接続の現在の数

1.3.14
2013-05-05
connections_writing
ngx_http_stub_status_module
nginxが応答をクライアントに書き戻す現在の接続数

1.3.14
2013-05-05
connections_reading
ngx_http_stub_status_module
nginxがリクエストヘッダを読み込んでいる現在の接続数

1.3.14
2013-05-05
connections_active
ngx_http_stub_status_module
待機接続を含む、アクティブなクライアント接続の現在の数

1.3.2
2012-06-26
status
ngx_http_core_module
レスポンスステイタス

1.1.18
2012-05-28
connection_requests
ngx_http_core_module
現在の接続数

1.1.18
2012-05-28
tcpinfo_rtt
ngx_http_core_module
クライアントのTCP接続に関する情報

1.1.18
2012-05-28
tcpinfo_rttvar
ngx_http_core_module
クライアントのTCP接続に関する情報

1.1.18
2012-05-28
tcpinfo_snd_cwnd
ngx_http_core_module
クライアントのTCP接続に関する情報

1.1.18
2012-05-28
tcpinfo_rcv_space
ngx_http_core_module
クライアントのTCP接続に関する情報

1.1.11
2011-12-12
https
ngx_http_core_module
接続がSSL接続で動作している場合は "on"

1.0.5
2011-07-19
uid_reset
ngx_http_userid_module
変数が「0」ではない空でない文字列に設定されている場合、クライアント識別子はリセットされます

1.0.3
2011-05-25
geoip_org
ngx_http_geoip_module
組織名

0.8.48
2010-08-03
geoip_region_name
ngx_http_geoip_module
国の地域名(地域、地域、州、県、連邦の土地など)

0.8.48
2010-08-03
geoip_area_code
ngx_http_geoip_module
電話市外局番(米国のみ)

0.8.48
2010-08-03
geoip_dma_code
ngx_http_geoip_module
Google AdWords API の地域ターゲティングに基づく、米国のDMA地域コード

0.8.31
2009-10-23
geoip_longitude
ngx_http_geoip_module
緯度

0.8.31
2009-10-23
geoip_latitude
ngx_http_geoip_module
緯度

0.8.31
2009-10-23
geoip_city_continent_code
ngx_http_geoip_module
2文字の国コード

0.8.7
2009-07-27
ssl_client_verify
ngx_http_ssl_module
クライアント証明書の検証結果を返します: "SUCCESS"、 "FAILED:reason"、および証明書が存在しなかった場合は "NONE"

0.8.3
2009-06-19
upstream_cache_status
ngx_http_upstream_module
応答キャッシュへのアクセス状況ステータスは下記のいずれか "MISS", "BYPASS", "EXPIRED", "STALE", "UPDATING", "REVALIDATED", "HIT"

0.7.27
2008-12-15
request_body
ngx_http_core_module
リクエストボディ

0.7.22
2008-11-20
cookie_name

ngx_http_core_module
cookie名

0.7.18
2008-10-13
realpath_root
ngx_http_core_module
現在のリクエストに対するルートディレクティブまたはエイリアスディレクティブの値に対応する絶対パス名

0.7.17
2008-09-15
pid
ngx_http_core_module
ワーカープロセスのPID

0.7.8
2008-08-04
arg_name

ngx_http_core_module
任意のレスポンスヘッダフィールド。 変数名の最後の部分は、ダッシュを下線で置き換えて小文字に変換されたフィールド名です。

0.7.2
2008-06-16
ssl_client_cert
ngx_http_ssl_module
確立されたSSL接続のクライアント証明書をPEM形式で返します

0.7.0
2008-05-19
hostname
ngx_http_core_module
ホスト名

0.6.6
2007-07-30
is_args
ngx_http_core_module
リクエスト行に引数がある場合は“?”、それ以外の場合は空の文字列

0.6.6
2007-07-30
args
ngx_http_core_module
リクエスト行の引数

0.6.5
2007-07-23
nginx_version
ngx_http_core_module
nginx のバージョン

0.5.20
2007-05-07
upstream_http_name

ngx_http_core_module
任意のレスポンスヘッダフィールド。 変数名の最後の部分は、ダッシュを下線で置き換えて小文字に変換されたフィールド名です。

0.5.20
2007-05-07
$sent_http_name

ngx_http_core_module
任意のレスポンスヘッダフィールド。 変数名の最後の部分は、ダッシュを下線で置き換えて小文字に変換されたフィールド名です。

0.5.20
2007-05-07
http_name

ngx_http_core_module
任意のリクエストヘッダフィールド。 変数名の最後の部分は、ダッシュを下線で置き換えて小文字に変換されたフィールド名です。

0.5.19
2007-04-24
upstream_addr
ngx_http_upstream_module
IPアドレスとポート (192.0.2.1:80)

0.5.18
2007-04-19
upstream_http_name

ngx_http_upstream_module
サーバー応答ヘッダーフィールドを保持します。 たとえば、「Server」応答ヘッダーフィールドは、$upstream_http_server 変数を通して利用できます。

0.5.9
2007-01-25
memcached_key
ngx_http_memcached_module
memcachedサーバーから応答を取得するためのキーの定義

0.5.6
2007-01-09
binary_remote_addr
ngx_http_core_module
バイナリ形式のクライアントアドレス

0.4.7
2006-10-10
request_body_file
ngx_http_core_module
リクエスト本体を含む一時ファイルの名前

0.4.4
2006-10-02
scheme
ngx_http_core_module
リクエストスキーム

0.3.57
2006-08-09
ssl_client_serial
ngx_http_ssl_module
SSL接続のクライアント証明書のシリアル番号

0.3.40
2006-04-19
limit_rate
ngx_http_core_module
応答レート制限が有効な場合にはこの値が設定されます

0.3.36
2006-04-05
request_completion
ngx_http_core_module
要求が完了した場合は「OK」、それ以外の場合は空の文字列

0.3.27
2006-02-08
ssl_cipher
ngx_http_ssl_module
SSL接続に使用される暗号の文字列を返します

0.3.27
2006-02-08
ssl_protocol
ngx_http_ssl_module
SSL接続のプロトコルを返します

0.3.12
2005-11-26
time_local
ngx_http_log_module
共通ログ形式の現地時間

0.3.10
2005-11-15
invalid_referer
ngx_http_referer_module
-

0.3.10
2005-11-15
body_bytes_sent
ngx_http_log_module
応答ヘッダを含まないクライアントへ送信されるバイト数; この値はmod_log_config Apacheモジュールの"%B"パラメータと互換性があります。

0.3.10
2005-11-15
sent_http_name
ngx_http_core_module

0.3.8
2005-11-09
connection
ngx_http_log_module
接続シリアル番号

0.3.8
2005-11-09
uid_set
ngx_http_userid_module
クッキーと送信されたクライアントの識別子

0.3.8
2005-11-09
uid_got
ngx_http_userid_module
クッキーと受け取ったクライアントの識別子

0.3.8
2005-11-09
gzip_ratio
ngx_http_gzip_filter_module
圧縮比

0.3.8
2005-11-09
upstream_response_time
ngx_http_upream
upstreamサーバから応答ヘッダを受け取るまでの時間を保持します。

0.3.8
2005-11-09
upstream_status
ngx_http_upream
upstreamサーバから取得したステータスコードを保持します。

0.3.8
2005-11-09
request_length
ngx_http_log_module
リクエストの長さ(リクエスト行、ヘッダとリクエストボディを含む)

0.3.8
2005-11-09
request_time
ngx_http_log_module
ミリ秒の精度のリクエストの処理の秒数

0.3.8
2005-11-09
uri
ngx_http_variables.c
リクエスト中の現在のURI、正規化されたもの

0.3.8
2005-11-09
status
ngx_http_log_module

0.3.8
2005-11-09
bytes_sent
ngx_http_log_module
応答ヘッダを含まないクライアントへ送信されるバイト数; この値はmod_log_config Apacheモジュールの"%B"パラメータと互換性があります。

0.3.3
2005-10-19
msec
ngx_http_log_module
ミリ秒の精度の現在の秒

0.3.3
2005-10-19
upstream_response_time
ngx_http_upstream
upstream のレスポンスタイム

0.1.44
2005-09-05
remote_user
ngx_http_log_module
ログインしたユーザー名

0.1.29
2005-05-12
proxy_add_x_forwarded_for


logs


commons



  • ngx_http_core_module


    • args

    • body_bytes_sent

    • bytes_received

    • bytes_sent

    • connection

    • connection_requests

    • host

    • hostname

    • https

    • limit_rate

    • msec

    • nginx_version

    • pid

    • proxy_protocol_addr

    • proxy_protocol_port

    • remote_addr

    • remote_port

    • remote_user

    • request

    • request_body

    • request_body_file

    • request_completion

    • request_filename

    • request_id

    • request_length

    • request_method

    • request_time

    • request_uri

    • server_addr

    • server_name

    • server_port

    • server_protocol

    • status

    • tcpinfo_rtt

    • tcpinfo_rttvar

    • tcpinfo_snd_cwnd

    • tcpinfo_rcv_space

    • time_iso8601

    • time_local




  • ngx_http_log_module


    • connection_requests

    • msec

    • request_length

    • request_time

    • status

    • time_iso8601

    • time_local




  • ngx_http_stub_status_module


    • connections_active

    • connections_reading

    • connections_writing

    • connections_waiting




  • ngx_http_ssi_module


    • date_gmt




  • ngx_stream_core_module


    • hostname

    • msec

    • pid

    • protocol

    • proxy_protocol_addr

    • proxy_protocol_port

    • remote_addr

    • remote_port

    • server_addr

    • server_port

    • status

    • time_iso8601

    • time_local




  • ngx_http_referer_module


    • invalid_referer




  • ngx_http_proxy_module


    • proxy_add_x_forwarded_for

    • proxy_host

    • proxy_port




  • ngx_stream_realip_module


    • realip_remote_addr

    • realip_remote_port




  • ngx_http_realip_module


    • realip_remote_addr

    • realip_remote_port




  • ngx_http_upstream_module


    • upstream_addr

    • upstream_bytes_received

    • upstream_bytes_sent

    • upstream_cache_status

    • upstream_connect_time

    • upstream_first_byte_time

    • upstream_queue_time

    • upstream_response_length

    • upstream_response_time

    • upstream_status




  • ngx_stream_upstream_module


    • upstream_addr

    • upstream_bytes_received

    • upstream_bytes_sent

    • upstream_connect_time

    • upstream_header_time

    • upstream_session_time




  • response


    • content_length



    ##

# logging Settings
##
# '#' Delete as it is unnecessary log
# '##' configration check faild
log_format main escape=json '{'
'"timestamp": "$time_iso8601",'
'"time_local": "$time_local",'
'"date_gmt": "$date_gmt",'
'"date_local": "$date_local",'
'"msec": "$msec",'
'"nginx": {'
'"connection": "$connection",'
'"connection_requests": "$connection_requests",'
'"connections": {'
'"active": "$connections_active",'
'"reading": "$connections_reading",'
'"writing": "$connections_writing",'
'"waiting": "$connections_waiting"'
'},'
'"host": "$host",'
'"limit_rate": "$limit_rate",'
'"pid": "$pid",'
'"server": {'
'"addr": "$server_addr",'
'"name": "$server_name",'
'"port": "$server_port",'
'"protocol": "$server_protocol"'
'},'
'"ssl": {'
'"cipher": "$ssl_cipher",'
'"ciphers": "$ssl_ciphers",'
'"curves": "$ssl_curves",'
'"early_data": "$ssl_early_data",'
'"protocol": "$ssl_protocol",'
'"server_name": "$ssl_server_name",'
'"session_id": "$ssl_session_id",'
'"session_reused": "$ssl_session_reused"'
'"client": {'
'"escaped_cert": "$ssl_client_escaped_cert",'
'"cert": "$ssl_client_cert",'
'"fingerprint": "$ssl_client_fingerprint",'
'"i_dn": "$ssl_client_i_dn",'
'"s_dn": "$ssl_client_s_dn",'
'"serial": "$ssl_client_serial",'
'"v_end": "$ssl_client_v_end",'
'"v_remain": "$ssl_client_v_remain",'
'"v_start": "$ssl_client_v_start",'
'"verify": "$ssl_client_verify"'
'},'
## '"preread": {'
## '"alpn_protocols": "$ssl_preread_alpn_protocols",'
## '"protocol": "$ssl_preread_protocol",'
## '"server_name": "$ssl_preread_server_name"'
## '}'
'}'
'"upstream": {'
'"upstream_addr": "$upstream_addr",'
'"bytes_received": "$upstream_bytes_received",'
## '"bytes_sent": "$upstream_bytes_sent",'
'"cache_status": "$upstream_cache_status",'
'"connect_time": "$upstream_connect_time",'
## '"first_byte_time": "$upstream_first_byte_time",'
'"header_time": "$upstream_header_time",'
## '"queue_time": "$upstream_queue_time",'
'"response_length": "$upstream_response_length",'
## '"response_time": "$upstream_response_time",'
## '"session_time": "$upstream_session_time",'
'"status": "$upstream_status"'
'},'
'"version": "$nginx_version"'
'},'
'"request": {'
'"args": "$args",'
'"body": "$request_body",'
'"body_file": "$request_body_file",'
## '"bytes_received": "$bytes_received",'
'"completion": "$request_completion",'
'"content_length": "$content_length",'
'"content_type": "$content_type",'
'"filename": "$request_filename",'
'"gzip": {'
'"ratio": "$gzip_ratio"'
'},'
'"http2": "$http2",'
'"https": "$https",'
'"id": "$request_id",'
'"invalid_referer": "$invalid_referer",'
'"length": "$request_length",'
'"method": "$request_method",'
'"proxy": {'
'"x_forwarded_for": "$proxy_add_x_forwarded_for",'
'"host": "$proxy_host",'
'"port": "$proxy_port",'
'"protocol_addr": "$proxy_protocol_addr",'
'"protocol_port": "$proxy_protocol_port"'
'},'
## '"protocol": "$protocol",'
'"realip": {'
'"remote_addr": "$realip_remote_addr",'
'"remote_port": "$realip_remote_port"'
'},'
'"referer": "$http_referer",'
'"remote": {'
'"addr": "$remote_addr",'
'"port": "$remote_port",'
'"user": "$remote_user"'
'},'
'"request": "$request",'
'"scheme": "$scheme",'
'"tcpinfo": {'
'"rtt": "$tcpinfo_rtt",'
'"rttvar": "$tcpinfo_rttvar",'
'"snd_cwnd": "$tcpinfo_snd_cwnd",'
'"rcv_space": "$tcpinfo_rcv_space"'
'},'
'"time": "$request_time",'
'"uri": "$request_uri",'
'"user_agent": "$http_user_agent",'
'"uid": {'
'"got": "$uid_got",'
'"reset": "$uid_reset",'
'"set": "$uid_set"'
'},'
'"uri": "$uri"'
'},'
'"response": {'
'"body_bytes_sent": "$body_bytes_sent",'
'"bytes_sent": "$bytes_sent",'
'"status": "$status"'
'}'
'}';


SSL



  • ngx_http_ssl_module


    • ssl_cipher

    • ssl_ciphers

    • ssl_client_cert

    • ssl_client_escaped_cert

    • ssl_client_fingerprint

    • ssl_client_i_dn

    • ssl_client_i_dn_legacy

    • ssl_client_raw_cert

    • ssl_client_s_dn

    • ssl_client_s_dn_legacy

    • ssl_client_raw_cert

    • ssl_client_s_dn

    • ssl_client_s_dn_legacy

    • ssl_client_serial

    • ssl_client_v_end

    • ssl_client_v_remain

    • ssl_client_v_start

    • ssl_client_verify

    • ssl_curves

    • ssl_early_data

    • ssl_preread_alpn_protocols

    • ssl_preread_protocol

    • ssl_preread_server_name

    • ssl_protocol

    • ssl_server_name

    • ssl_session_id

    • ssl_session_reused




  • ngx_stream_ssl_module


    • ssl_cipher

    • ssl_ciphers

    • ssl_client_cert

    • ssl_client_fingerprint

    • ssl_client_i_dn

    • ssl_client_raw_cert

    • ssl_client_s_dn

    • ssl_client_raw_cert

    • ssl_client_s_dn

    • ssl_client_s_dn_legacy

    • ssl_client_serial

    • ssl_client_v_end

    • ssl_client_v_remain

    • ssl_client_v_start

    • ssl_client_verify

    • ssl_curves

    • ssl_protocol

    • ssl_server_name

    • ssl_session_id

    • ssl_session_reused



SSL/TLS 系の module

    log_format main escape=json '{'

'"ssl": {'
'"cipher": "$ssl_cipher",'
'"ciphers": "$ssl_ciphers",'
'"curves": "$ssl_curves",'
# (1.15.3) '"early_data": "$ssl_early_data",'
'"protocol": "$ssl_protocol",'
'"server_name": "$ssl_server_name",'
'"session_id": "$ssl_session_id",'
'"session_reused": "$ssl_session_reused",'
'"client": {'
'"escaped_cert": "$ssl_client_escaped_cert",'
'"cert": "$ssl_client_cert",'
'"fingerprint": "$ssl_client_fingerprint",'
'"i_dn": "$ssl_client_i_dn",'
'"s_dn": "$ssl_client_s_dn",'
'"serial": "$ssl_client_serial",'
'"v_end": "$ssl_client_v_end",'
'"v_remain": "$ssl_client_v_remain",'
'"v_start": "$ssl_client_v_start",'
'"verify": "$ssl_client_verify"'
'},'
'"preread": {'
'"alpn_protocols": "$ssl_preread_alpn_protocols",'
'"protocol": "$ssl_preread_protocol",'
'"server_name": "$ssl_preread_server_name"'
'}'
'}'
'}';


ngx_http_v2_module

HTTP/2 用 module

    log_format main escape=json '{'

'"http2": "$http2",'
'}';


Module ngx_http_gzip_module

    log_format main escape=json '{'

'"gzip": {'
'"ratio": "$gzip_ratio"'
'}'
'}';


参考