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

推薦する

VMware 仮想マシンに固定 IP アドレスを設定する方法 (グラフィック チュートリアル)

1. メニューバーで「編集」→「仮想ネットワーク エディター」を選択して仮想ネットワーク エディタ...

Docker+K8S+GitLab/SVN+Jenkins+Harbor をベースにした継続的インテグレーション配信環境の構築に関する詳細なチュートリアル

目次環境設定の概要1.K8Sとは何ですか? 2. K8S を使用する理由3. K8S を使用する利点...

Linux で起動時にプログラムを自動的に実行させる最も簡単な方法

たくさん集めましたが、すべて失敗に終わりました。最終的に、この方法は優れており、使用に影響を与えない...

HTMLページのヘッダーコードは完全に明確です

以下のコードはすべて <head>...</head> の間にあり、具体的な...

意外と知らないLinuxのSSHコマンドの使い方7選を徹底解説

システム管理者は複数のサーバーを同時に管理する場合があり、これらのサーバーは異なる場所に配置されてい...

マークアップ言語 - Web アプリケーション CSS スタイル

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

最近、Vue のソースコードを勉強していて、Vue で親コンポーネントと子コンポーネント間でデータを...

Ubuntu 18.04 のすべての Python ライブラリを一度にアップグレードする方法

ピップとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンインストー...

SSH ポート転送、ローカル ポート転送、リモート ポート転送、動的ポート転送の詳細

パート 1 SSH ポート転送の概要カフェで無料Wi-Fiを利用しているとき、誰かがあなたのパスワー...

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

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

データベースクエリ、どのオブジェクトにどのフィールドが含まれているか、メソッドステートメント

データベースは、どのオブジェクトにどのフィールドが含まれているかを照会します。 *を選択 sysob...

Nginx リバース プロキシ構成の完全なプロセス記録

1. 準備LinuxシステムにTomcatをインストールし、デフォルトのポート8080を使用してTo...

MySQL にテキストと画像を保存する方法

Oracle の大きなテキスト データ型 Clob 長いテキスト型 (MySQL ではサポートされて...

Ubuntu 16.04 サーバーで MySQL を設定し、リモート接続を有効にする方法

背景最近、Node.js を勉強しているのですが、クラウド サーバーがあることを思い出しました。しか...