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グローバルカスタム命令の実践 モーダルドラッグ

推薦する

ポップアップ効果を実現するにはjsを使用します

この記事の例では、ポップアップ効果を実現するためのjsの具体的なコードを参考までに共有しています。具...

MySQLバックアップとリカバリの実践に関する詳細な説明

1. mysqlbackup の紹介mysqlbackup は、MySQL Enterprise B...

Tomcat をアンインストールして再インストールする方法 (画像とテキスト付き)

tomcat9をアンインストールする1. Tomcatのインストールはディレクトリに解凍するだけで...

CentOS 6.5 i386 インストール MySQL 5.7.18 詳細チュートリアル

ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...

img タグの src 属性値が空の場合の 2 つのリクエストの問題 (IE 以外のブラウザ)

img src 値が空の場合、リクエストが 2 つ行われます。一部の学生は以前に同様の状況に遭遇した...

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属...

CSS3 フィルターの違いと応用の詳しい説明:ドロップシャドウフィルターとボックスシャドウ

標準 CSS3 を使用して要素の影の効果を実現するには、2 つの手順があります。1 つ目は一般的なb...

Pythonの関数知識についての簡単な説明

目次関数パラメータの2つの主要なカテゴリ位置パラメータ可変長パラメータ名前空間要約する関数パラメータ...

MySQL 5.7.18 バージョンの無料インストール構成チュートリアル

MySQLはインストール版と無料インストール版に分かれていますインストール版の拡張子はmsi、無料イ...

JSデータ型検出のさまざまな方法の概要

目次背景データ型を決定する方法は何ですか? 1. typeof を使用して基本データ型を決定します。...

CSS3はグラフィックの落下アニメーション効果を実現します

まずは効果を確認実装コード <div class="box box1"&g...

JavaScript と CSS を最適化してウェブサイトのパフォーマンスを向上させる

<br /> 第 1 部と第 2 部では、Web サイトのパフォーマンス、ページ コンテ...

js の Array.forEach でループを終了する方法の例

目次forEach() メソッドjs の Array.forEach のループから抜け出す方法解決:...

forEachでawaitが機能しない問題を解決する

1. はじめに数日前、プロジェクトでトラバーサルに使用したときに落とし穴に遭遇し、解決するのに 1 ...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...