Nginxで利用可能な組み込み変数
Nginx では、あらかじめ定義された組み込み変数が用意されています。これらの変数を利用することで、リクエストの情報や処理結果などを取得できます。ここでは Nginx の組み込み変数の使い方について解説します。
組み込み変数とは
組み込み変数とは、Nginx にあらかじめ用意されている変数のことです。次のような書式となっています。
$変数名
例えば、次のような変数があります。
$request_method : HTTPリクエストメソッド(GET や POST) $hostname : ホスト名 $remote_addr : クライアントのIPアドレス $scheme : リクエストスキーム(http または https) $status : HTTPステータスコード(200, 404 など)
Nginx の組み込み変数の一覧については「Alphabetical index of variables」を参照されてください。
また、「接頭辞+名前」の形式で動的に生成される組み込み変数もあります。
$http_<name> : 任意の HTTP リクエストヘッダーの値 $arg_<name> : 指定したクエリパラメータの値 $cookie_<name> : 指定した名前の Cookie の値
例えば、 $http_<name> の場合、クライアントからのリクエストヘッダーに含まれる項目の値を取得することができます。例えば Host であれば $http_host、 User-Agent であれば $http_user_agent となります。
<name> の部分は次のように変換してください。
・項目名はすべて小文字に変換する ・ハイフン (-) はアンダースコア (_) に変換する
例えば index.html?id=999 というリクエストから idパラメータの値を取得するには $arg_id で取得できます。
組み込み変数を取得してみる
それでは、実際に組み込み変数の値を取得してみます。クライアントからリクエストがあったときに、次の 3 つの組み込み変数の値を取得し、クライアントへ返します。
$request_uri : リクエスト URI $remote_addr : クライアントのIPアドレス $http_user_agent : ユーザーエージェント
Nginx の設定ファイルである nginx.conf ファイルで http コンテキストに次のように設定しました。(必要な部分のみの抜粋です)。
http {
server {
root html;
location / {
default_type text/plain;
return 200 "URI: $request_uri\nRemote Addr: $remote_addr\nUser Agent: $http_user_agent\n";
}
}
}
default_type ディレクティブでテキストとして結果を返すように設定しています。そして return ディレクティブでステータスコード 200 と 3 つの組み込み変数の値をクライアントへ返します。
ブラウザを起動し、次の URL へアクセスします。
http://localhost/
次のような結果が表示されます。
URI: /
Remote Addr: 127.0.0.1
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
組み込み変数の値を取得することができました。
-- --
Nginx の組み込み変数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。