nginxカスタム変数と組み込み定義済み変数の使用

nginxカスタム変数と組み込み定義済み変数の使用

概要

Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変数値は次のように参照できます。

$変数名

nginxには、カスタム変数と組み込み定義済み変数の2種類の変数があります。

組み込み変数

声明

setコマンド(非一意)を使用して、server、http、locationなどのタグ内の変数を宣言できます。構文は次のとおりです。

$variable 名 変数値 を設定する

nginx 内のすべての変数は $ で始まる必要があることに注意してください。

可視性

nginx 設定ファイルで使用されるすべての変数を宣言する必要があります。そうしないと、nginx は起動に失敗し、関連する例外ログが出力されます。

nginx 変数の興味深い特徴は、どれもグローバルには表示されないが、グローバル変数ではないことです。例えば次の例

場所 a/
 200ドルを返す
}

場所 b/ {
 $a hello nginx を設定します
 200ドルを返す
}

変数はグローバルに表示されるため、nginx は起動時にエラーを報告しません。ただし、最初の場所では $a の具体的な値は不明であるため、返される応答結果は空の文字列になります。

さまざまなレベルのタグで宣言された変数の可視性ルールは次のとおりです。

  • ロケーション タグで宣言された変数は、このロケーション ブロックに表示されます。
  • サーバー タグで宣言された変数は、サーバー ブロックとサーバー ブロック内のすべてのサブブロックに表示されます。
  • http タグで宣言された変数は、http ブロックと http ブロック内のすべてのサブブロックに表示されます。

組み込み定義済み変数

組み込み定義済み変数は宣言なしで使用できる変数で、通常はHTTPリクエストまたはレスポンスのコンテンツの一部の値を含みます。以下は、よく使用される組み込み定義済み変数の一部です。

変数名意味
$arg_PARAMETER GET リクエスト内の PARAMETER という名前のパラメータの値。
$引数この変数は、GET リクエストのパラメータと同じです。例えば、foo=123&bar=blahblah; この変数は変更可能です
$バイナリリモートアドレスバイナリ形式のクライアント アドレス。
送信された本文バイト数転送されたページのバイト数
$コンテンツの長さリクエスト ヘッダーの Content-length フィールド。
$コンテンツタイプリクエスト ヘッダーの Content-Type フィールド。
$クッキー_クッキークッキー COOKIE の値。
$ドキュメントルート現在のリクエストのルート ディレクティブで指定された値。
$ドキュメントURI $uriと同じです。
$ホストリクエスト内の Host ヘッダー フィールド。リクエスト内の Host ヘッダーが利用できないか空の場合、リクエストを処理するサーバーの名前 (リクエストを処理するサーバーの server_name ディレクティブの値)。値は小文字で、ポートは含まれません。
$ホスト名マシン名は gethostname システム コールの値です。
$http_HEADER HTTP リクエスト ヘッダー (HEADER) の内容は、HTTP リクエスト内の内容を小文字に変換したもので、- は _ (ダッシュはアンダースコア) になります。例: $http_user_agent (Uaer-Agent の値)。
$送信されたhttp_HEADER HTTP 応答ヘッダーの内容。HEADER は、HTTP 応答の内容を小文字に変換したもので、- は _ (ダッシュはアンダースコア) になります。例: $sent_http_cache_control、$sent_http_content_type…;
$is_args $args が設定されている場合、値は "?" になり、設定されていない場合は "" になります。
$制限レートこの変数は接続速度を制限できます。
$nginx_バージョン現在実行中の nginx のバージョン番号。
$クエリ文字列$argsと同じです。
$リモートアドレスクライアントの IP アドレス。
$リモートポートクライアントのポート。
$リモートユーザーAuth Basic モジュールによって認証されたユーザー名。
$リクエストファイル名ルートまたはエイリアス ディレクティブと URI 要求によって生成された、現在の接続要求のファイル パス。
$リクエスト本体この変数 (0.7.58 以降) には、リクエストの主な情報が含まれます。これは、proxy_pass または fastcgi_pass ディレクティブを使用する場所で意味があります。
$リクエスト本体ファイルクライアント要求本文情報の一時ファイル名。
$リクエスト完了リクエストが成功した場合は「OK」に設定され、リクエストが完了しなかったか、一連のリクエストの最後ではなかった場合、空に設定されます。
$リクエストメソッドこの変数は、クライアントによって要求されたアクション (通常は GET または POST) です。バージョン 0.8.20 以前では、この変数は常にメイン リクエスト内のアクションです。現在のリクエストがサブリクエストの場合、現在のリクエストのアクションは使用されません。
$リクエストURIこの変数は、いくつかのクライアント要求パラメータを含む元の URI と同じです。変更できません。URI を変更または書き換えるには、$uri を参照してください。
$スキーム使用されるプロトコル (http または https など)、たとえば rewrite ^(.+)$ $scheme://example.com$1 redirect;
$サーバーアドレスサーバー アドレス。この値は、システム コールの完了後に決定できます。システム コールをバイパスする場合は、listen でアドレスを指定し、bind パラメータを使用する必要があります。
$サーバー名サーバー名。
$サーバーポートリクエストがサーバーに到着したポート番号。
$サーバープロトコルリクエストで使用されるプロトコル。通常は HTTP/1.0 または HTTP/1.1 です。
$uriリクエスト内の現在のURI(リクエストパラメータがない場合、パラメータは1つのrsいいえ同じブラウズビューデバイス合格届けるのargs) は、内部リダイレクトまたは index ディレクティブを使用して変更できます。プロトコルとホスト名を含めないでください。例: /foo/bar.html

nginx カスタム変数と組み込み定義済み変数の使用に関するこの記事はこれで終わりです。より関連性の高い nginx カスタム変数と組み込み定義済み変数については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 簡単な傍受のための nginx 組み込み変数の詳細な説明と分離
  • 最新バージョンのnginx組み込み変数を共有する
  • Nginx 設定ファイルでの変数の記述と使用に関する簡単な分析
  • nginx グローバル変数の概要
  • Nginx のグローバル変数の概要

<<:  MySQL トリガーの原理と使用例の分析

>>:  Vueグローバルカスタム命令の実践 モーダルドラッグ

推薦する

開発効率の向上に役立つ 56 個の実用的な JavaScript ツール関数

目次1. デジタルオペレーション(1)指定された範囲内で乱数を生成する2. 配列操作(1)配列の順序...

vue フロントエンド HbuliderEslint リアルタイム検証 自動修復設定

目次HBuilderX での ESLint プラグインのインストールカスタム eslint-js ル...

Windows10システムにスーパーセットをインストールする手順

Superset は、エレガントなインターフェースとデータ テーブルに基づく動的なデータ生成を主な機...

Docker初心者が初めてよく使うコマンドを試してみる練習記録

Docker を正式に使用する前に、まず Docker でよく使用されるコマンドに慣れておきましょう...

JavaScript における clientWidth、offsetWidth、scrollWidth の違い

1. コンセプトこれらはすべて Element の属性であり、要素の幅を示します。 Element....

Windows 10 での MySQL 8.0.22 のインストールと設定方法のグラフィック チュートリアル

MySQL 8.0.22のインストールと設定方法のグラフィックチュートリアル、参考までに、具体的な内...

el-select のスタイルを変更する方法の詳細な説明: popper-append-to-body と popper-class

elementUI が提供する el-select コンポーネントのスタイルを変更する方法この問題...

2048 ゲームを実装するためのネイティブ js

2048ミニゲーム、参考までに具体的な内容は以下のとおりですまず、2048ゲームは16のグリッドか...

MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスタースレーブレプリケーションは、スレーブデー...

Maxwell を使用して MySQL データをリアルタイムで同期する方法

目次マクスウェルについてMaxwellの設定と使用1. Maxwellインストールパッケージをダウン...

MySQLデータ行と行オーバーフローのメカニズムの詳細な説明

1. 行の形式は何ですか? MySQL の行形式の設定は次のように表示されます。 実際、MySQL ...

k8s に ingress-nginx をデプロイする手順

目次序文1. Ingressの展開と構成2. httpsを使用する序文k8sクラスタサービスがデプロ...

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...

JavaScript によるデータ視覚化: ECharts マップの作成

目次概要予防1. 使用方法2. 実装手順予備実装コード効果: Geo共通設定上記の構成を追加した後の...

Linux で MySQL データベースのインポートおよびエクスポート コマンドを実装する方法

1. mysqldump コマンドを使用してデータベースをエクスポートします (このコマンドのパスで...