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

推薦する

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

ウェブサイトのビジュアルデザインパスはユーザーの習慣に合わせる必要がある

クーパー氏は、一般的に上から下、左から右に向かうユーザーの視覚経路について話しました。優れたビジュア...

MySQL データベースの鉄則 (要約)

適切なデータベース仕様は、ソフトウェア実装の複雑さを軽減し、通信コストを削減するのに役立ちます。この...

優れたウェブフロントエンドデザインの指標

Web ページのアクセシビリティは、フロントエンドでのみ評価および実装できるもののようです。ユーザビ...

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト 1...

1行のコードでLinuxのプロセスを隠す方法を学ぶ

友人たちはいつも、Linux のプロセスを隠す方法を私に尋ねます。私は、どの程度隠したいのか、カーネ...

開発効率を向上させる 20 の JavaScript ヒント

目次1. 配列を宣言して初期化する2. 合計、最小値、最大値を計算する3. 文字列、数値、オブジェク...

MySQLデータベースインデックスの欠点と適切な使用

目次インデックスの適切な使用1. 通常のインデックスのデメリット2. 主キーインデックスの落とし穴3...

docker を使用してシンプルな C/C++ プログラムをデプロイする方法

1. まずhello-world.cppファイルを作成しますプログラムコードは次のとおりです。 #i...

mysqldump でデータベースをバックアップするときに特定のライブラリを除外する例

例: mysqldump –all-databases を使用すると、すべてのライブラリがエクスポー...

nginx を介して方向プロキシを実装するプロセスの図

この記事は主に、nginx を介して方向プロキシを実装するプロセスを紹介します。この記事のサンプル ...

Linux で Sudo を使用して権限を委譲する

sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド&#...

jsはクリックしてカードを切り替える機能を実現します

この記事の例では、クリックしてカードを切り替える機能を実現するためのjsの具体的なコードを共有してい...

MySQLトリガートリガー例の詳細な説明

目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...