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はテーブルの追加、削除、変更の例を実装します

推薦する

ドラッグ効果を実現するための純粋なCSSコード

目次1. ドラッグ効果の例2. CSS実装の原則3. CSS実装の詳細4. CSSレイアウト1. 固...

HTMLの行間設定方法と問題点

<p></p> の行間隔を設定するには、style="line-h...

VirtualBox での CentOS 8.1 仮想マシンのインストールを最小限に抑える詳細なチュートリアル

1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...

Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

目次父から息子へ:息子から父へ: Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、...

Navicat Premium15 でクラウド サーバーに接続する際のデータベースの問題と落とし穴

クラウドサーバーを使用するとデータベースに接続できる場合もありますが、Navicat Premium...

CentOS サーバーのセキュリティ構成戦略

最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...

JavaScriptはフォームデータの非同期送信を実装します

この記事では、フォームデータの非同期送信を実装するためのJavaScriptの具体的なコードを参考ま...

シンプルなドラッグ効果を実現するJavaScript

この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

js キャンバスは角丸画像を実現します

この記事では、角を丸くするためのjsキャンバスの具体的なコードを参考までに紹介します。具体的な内容は...

HTMLウェブページのMETAタグのコンテンツを書く際のポイント

META タグは、HTML 言語のヘッダー領域にある補助タグです。作成者、日時、Web ページの説明...

フロントエンドJSサンドボックスを実装するいくつかの方法についての簡単な説明

目次序文iframeはサンドボックスを実装しますdiffメソッドを使用したサンドボックスの実装プロキ...

nginxワーカープロセスループの実装

ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...

Nginx の負荷分散と動的および静的分離の原理と構成

目次1. Nginxは負荷分散の原則を実装する2. Nginxの動的および静的分離の原則Nginx ...

Linux コマンドラインで電卓を使用する 5 つのコマンド

みなさんこんにちは。私は梁旭です。 Linux を使用するときに、計算を行う必要がある場合があり、そ...

MySQLサービスの自動停止の解決策

この記事では主に、MySQL サービスの自動停止の解決策を紹介し、参考と学習のために共有します。一緒...