nginx 設定場所方法の概要

nginx 設定場所方法の概要

位置一致順序

1. 「=」プレフィックス命令マッチング、マッチングが成功したら他のマッチングを停止
2. 通常の文字列命令マッチング、順序は長いものから短いものへ、マッチングに成功した場所で^~を使用した場合は、他のマッチングを停止します(通常のマッチング)
3. 設定ファイル内の順序に従って正規表現コマンドのマッチングを行い、成功した場合は他のマッチングを停止する
4. 3番目のステップで一致した場合はその結果を使用し、一致しなかった場合は2番目のステップの結果を使用します。

注記

1. 一致順序は、最初に通常の文字列と一致し、次に正規表現と一致します。また、共通文字列のマッチング順序は、設定内の文字の長さに応じて長いものから短いものの順になります。つまり、共通文字列で設定された場所の順序は関係ありません。最終的には、nginx は設定の長さに応じてマッチングを行います。ただし、正規表現は設定ファイル内の順序でテストされることに注意してください。正規表現の最初の一致が見つかると検索は停止します。

2. 一般的に、通常の文字列の位置の一致が成功すると、正規表現の位置も一致します。この動作を変更するには 2 つの方法があります。1 つは「=」プレフィックスを使用することです。これは厳密な一致を実行し、リクエストの処理中に一致が成功した後すぐに他の一致を停止します。もう 1 つは「^~」プレフィックスを使用することです。このプレフィックスを通常の文字列に使用すると、パスが一致する場合に nginx に正規表現をテストしないように指示します。

パターンと順序の一致

先頭の Location = /uri = は完全一致を示し、完全一致のみが有効になります。

location ^~ /uri ^~ は URL パスのプレフィックス一致で始まり、正規表現の前に来ます。

先頭の位置 ~ パターン ~ は、大文字と小文字を区別する正規一致を示します。

場所 ~* パターン ~* は大文字と小文字を区別しない正規表現で始まります。

修飾子のない location /uri もプレフィックス一致を示しますが、正規表現一致の後になります。

location / Universal matching では、他の場所と一致しないリクエストが一致します。これは、switch の default に相当します。

実験例

「^~」と「~」をテストします。nginx の設定は次のとおりです。ブラウザに http://localhost/helloworld/test と入力すると、601 が返されます。 #1 をコメントアウトして #2 を開き、ブラウザに http://localhost/helloworld/test と入力すると、603 が返されます。注意: #1 と #2 は同時に開くことはできません。これら 2 つは通常の文字列であるため、同時に開くと、nginx の起動時に nginx: [emerg] duplicate location "/helloworld"... が報告されます。

場所 ^~ /helloworld { #1
 601を返します。
}
  
#場所 /helloworld { #2
# 602 を返します。
#}

場所 ~ /helloworld {
 603を返します。
} 

共通文字列の長さをテストします (共通文字列の一致は順序とは関係なく長さに関係します)。ブラウザに http://localhost/helloworld/test/a.html と入力すると、601 が返されます。ブラウザに http://localhost/helloworld/a.html と入力すると、602 が返されます。

場所 /helloworld/test/ { #1
 601を返します。
}
  
場所 /helloworld/ { #2
 602を返します。
}

正規表現の順序をテストします (正規表現の一致は順序に依存します)。ブラウザに http://localhost/helloworld/test/a.html と入力して 602 を返します。#2 と #3 の順序を入れ替えて、ブラウザに http://localhost/helloworld/test/a.html と入力して 603 を返します。

場所 /helloworld/test/ { #1
 601を返します。
}

場所 ~ /helloworld { #2
 602を返します。
}
  
場所 ~ /helloworld/test { #3
 603を返します。
}

したがって、実際の使用では、次のように少なくとも 3 つの一致ルール定義があると思います。

#ウェブサイトのルートと直接一致します。ドメイン名を介してウェブサイトのホームページにアクセスする方が頻繁になります。これを使用すると、処理が高速化されると公式サイトは述べています。 
#これはバックエンドアプリケーションサーバーに直接転送されるか、静的ホームページになる場合があります# 最初に必要なルールの場所 = / { 
 proxy_pass http://tomcat:8080/index 
} 
 
# 2 番目の必須ルールは、静的ファイル要求を処理することです。これは、http サーバーとしての nginx の強みです。# ディレクトリ マッチングまたはサフィックス マッチングの 2 つの構成モードがあり、どちらかを選択するか、両方を使用します。location ^~ /static/ { 
 ルート /webroot/static/; 
} 
場所 ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { 
 ルート /webroot/res/; 
} 
 
#3 番目のルールは一般的なルールで、動的なリクエストをバックエンド アプリケーション サーバーに転送するために使用されます。#非静的ファイル リクエストはデフォルトで動的なリクエストであり、実際の状況に応じて把握できます。#結局のところ、人気のあるフレームワークの中には、.php や .jsp のサフィックスが付いているものはほとんどありません。location / { 
 プロキシパス http://tomcat:8080/ 
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。
  • nginx プロキシ サーバーで双方向証明書検証を構成する方法
  • CentOS 7.3 で Nginx 仮想ホストを設定する方法
  • PHP-FPMとNginx間の通信メカニズムの詳細な説明
  • Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明
  • nginx を使用して 1 つのドメイン名で複数の Laravel プロジェクトを構成する方法の例
  • シェルスクリプト nginx 自動化スクリプト
  • DockerでNginxサーバーを作成する方法
  • dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明
  • Nginx に React プロジェクトをデプロイする方法の例

<<:  CentOS で MySQL 5.1 を 5.5.36 にアップグレードする

>>:  React+Antdはテーブルの追加、削除、変更の例を実装します

推薦する

Vue3デスクトップアプリケーションの構築方法

この記事では、Vite を使用して Vue 3 デスクトップ プロジェクトを開発する方法について説明...

sshとは何ですか?使い方は?どのような誤解があるのでしょうか?

目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...

Vueはドラッグ可能なツリー構造図を実装します

目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...

ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明

2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...

MySql の集計関数に条件式を追加する方法

MySQL のフィルタリングのタイミングは、集計関数で使用される where 条件と having ...

Ubuntu Server でのワイヤレス ネットワーク カードの詳細な設定

1. ワイヤレス ネットワーク カードを挿入し、コマンドiwconfigを使用してワイヤレス ネット...

IE イメージ ツールバーを無効にする

IE6 で試してみたところ、ツールバーが表示されました。オプションに「イメージ ツールバーを有効にす...

jsオブジェクト指向カプセル化カスケードドロップダウンメニューリストの実装手順

この例で開発されたカスケード ドロップダウン メニューは、既存の JSON データに基づいて作成され...

HTML ウェブページ画像タグ

画像タグ <IMG> を挿入します。今日私たちが目にするカラフルなウェブページはすべて、...

WeChatアプレットのスクロールビューが左右連動効果を実現

WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容...

CSS3 で画像ドロワー効果を実装するためのサンプル コード

いつものように、まずは画像効果を投稿しましょう: このエフェクトの原理は非常にシンプルです。CSS3...

Vueのハッシュジャンプ原理の詳細な説明

目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...

Linux でファイルプレフィックスを一括で追加する方法

フォルダー内のすべての txt ファイルのファイル名の前に「gt_」を追加する必要があります。つまり...

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

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