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

推薦する

iframe 適応サイズ実装コード

ページドメインの関係:メインページ a.html はドメイン A: www.jb51.net に属し...

HTMLファイルとは何ですか?HTMLファイルを開く方法

HTML は Hypertext Markup Language の略です。現在、ほとんどの Web...

MySQLは文字列関数のSQL文をインターセプトします

1. left(name,4)は左の4文字をインターセプトしますリスト: SELECT LEFT(2...

バランスの取れたデジタルスクロール効果を実現するJavaScript

目次1. 実施の背景2. 実装のアイデア3. 実施プロセス1. 実施の背景先週、ユーザーがタスクを完...

単一選択折りたたみメニュー機能を実現するCSS

前回の「最もシンプルなスイッチを実現するCSS」のように、HTML5とCSS3でほとんどの機能をすで...

ページリファクタリングスキル - コンテンツ

雑談はここまでにして、インターネット上で見つかる高性能な Yahoo ウェブサイトを構築するための数...

Linux コマンドを素早く習得する 4 つの方法

Linux マスターになりたいなら、いくつかの Linux コマンドを習得することが不可欠です。 L...

React のネストされたコンポーネントの構築順序

目次Reactの公式サイトではライフサイクルの説明を見ることができます次に、ネストされたコンポーネン...

入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...

vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明

目次1. はじめに2. 使用1. vue2とvue3の違い2. ページ上の一部のデータはキャッシュす...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

複数のdiv内のテーブルのtdwidth設定は同じで、揃えることができません

最近、複数のdivにあるテーブルのTDを同じ幅に調整しても、揃えることができず、幅にパターンがないこ...

Centos8 でローカル Web サーバーを構築するための実装手順

1 概要システム Centos8 では、httpd を使用してローカル Web サーバーを構築します...

mysql インストーラ ウェブ コミュニティ 5.7.21.0.msi インストール グラフィック チュートリアル

この記事の例では、Androidの9グリッド画像を表示するための具体的なコードを参考までに共有してい...