nginxのlocation命令の詳細
2290 ワード
前にnginx.confのファイル構造を紹介しましたが、大体トップレベルの命令と各級の命令を紹介しました.今日はhttpモジュールの中のサブモジュールserverの命令locationを紹介します.この命令は要求ルーティング転送規則に直接影響し、重要です.
locationマッチングルールの説明
サーバモジュールの下では、異なる要求URIに一致する複数のlocationモジュールを設定して、異なるニーズを満たすことができます.最も一般的な一致記号は、主に(修飾子なし 指定したモードで開始する必要があります=等号 指定したモードと正確に一致する必要があります ~
正則的に一致し、同時に一致する場合は大文字と小文字を区別する必要があります. ~*
指定した正規表現は大文字と小文字を区別しません ^~
修飾子なしの動作と同様に、指定されたモードで開始されますが、モードが一致すると、他のモードの検索が停止します. @
名前付きlocationセグメントを定義します.これらのセグメントは、try_などの内部で生成されたリクエストにのみアクセスできます.filesまたはerror_Page等
優先順位の一致
検索順と優先度1:「=」付きの正確な一致優先度2:修飾子なしの正確な一致3:正規表現プロファイルで定義された順序4:「^~」付き修飾子、先頭一致5:「~」または「~*」付き修飾子の場合、正規表現がURIと一致する場合6:修飾子がない場合、指定した文字列がURIの先頭と一致する場合
root、aliasの違い
root命令とalias命令はよく似ていて混同されやすいので、ここでは両者の違いやつながりを説明する必要があります.その名の通りaliasは別名の意味で、rootはディレクトリとの意味を表します.以下、それぞれの例を挙げて説明します.
この構成は、/img/が要求されるたびにnginxが要求するステアリング/var/www/image/ディレクトリを表します.
ここでの構成は、/img/のルートディレクトリが/var/www/imageである場合、実際に要求されるディレクトリアドレスは/var/www/image/img
locationマッチングルールの説明
サーバモジュールの下では、異なる要求URIに一致する複数のlocationモジュールを設定して、異なるニーズを満たすことができます.最も一般的な一致記号は、主に(
=、~、~*、^~、@
および符号なし一致)を含む. :location [=|~|~*|^~|@] pattern{……}, URI 。
server {
server_name server1;
location /api{
……
}
}
:
http://server1/api
http://server1/api?t=1991
http://server1/api/
http://server1/api234
:
http://server1/testapi
http://server1/v1/api
server {
server_name server2;
location = /api{
……
}
}
:
http://server2/api
http://server2/api?p1
:
http://server2/api/
http://server2/api2
正則的に一致し、同時に一致する場合は大文字と小文字を区別する必要があります.
server {
server_name server3;
location ~ ^/api$ {
……
}
}
:
http://server3/api
http://server3/api?p1=11&p2=22
:
http://server3/API
http://server3/api/
http://server3/api234
指定した正規表現は大文字と小文字を区別しません
server {
server_name server;
location ~* ^/api$ {
……
}
}
:
http://server/api
http://server/API
http://server/Api
http://server/APi
http://server/api?p1=11&p2=22
:
http://server/api/
http://server/apiv2
修飾子なしの動作と同様に、指定されたモードで開始されますが、モードが一致すると、他のモードの検索が停止します.
名前付きlocationセグメントを定義します.これらのセグメントは、try_などの内部で生成されたリクエストにのみアクセスできます.filesまたはerror_Page等
優先順位の一致
検索順と優先度1:「=」付きの正確な一致優先度2:修飾子なしの正確な一致3:正規表現プロファイルで定義された順序4:「^~」付き修飾子、先頭一致5:「~」または「~*」付き修飾子の場合、正規表現がURIと一致する場合6:修飾子がない場合、指定した文字列がURIの先頭と一致する場合
root、aliasの違い
root命令とalias命令はよく似ていて混同されやすいので、ここでは両者の違いやつながりを説明する必要があります.その名の通りaliasは別名の意味で、rootはディレクトリとの意味を表します.以下、それぞれの例を挙げて説明します.
location /img/ {
alias /var/www/image/;
}
この構成は、/img/が要求されるたびにnginxが要求するステアリング/var/www/image/ディレクトリを表します.
location /img/ {
root /var/www/image;
}
ここでの構成は、/img/のルートディレクトリが/var/www/imageである場合、実際に要求されるディレクトリアドレスは/var/www/image/img
:alias “/” , , root 。
である