はじめに
nginx サーバーの下に複数の場所を設定すると、異なるパスの一致に応じて異なる処理が実行されます。
nginx で一般的に使用される正規表現
文法規則: location [=|~|~*|^~] /uri/ { … }
- ##= の先頭は完全一致を意味します。
#^~ 先頭は、大文字と小文字が区別されることを意味します。 -
#~ 先頭は、大文字と小文字を区別する正規の一致を意味します。
-
~* で始まります: 大文字と小文字を区別しない通常の一致。
-
!~ と !~* はそれぞれ、大文字と小文字を区別する非一致、および大文字と小文字を区別しない非一致の正規一致を表します。
-
/ は、ユニバーサル マッチング、あらゆるリクエストが一致することを意味します。
複数のロケーション構成の場合、一致順序は次のとおりです (検証されていません):
Match = 最初に、次に ^ ~ に続いて、ファイル内の順序で通常のマッチングが行われ、最後に / ユニバーサル マッチングに渡されます。照合が成功すると、照合は停止され、現在の照合ルールに従ってリクエストが処理されます。
実際の測定値
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | server {
listen 80;
listen [::]:80;
server_name location.test.com;
access_log / var /log/nginx/location.host.access.log main;
#*********************注意多个location通常按精确的放前面,模糊大范围的放后面,nginx先找= ******************************
location = /login.html {#精确匹配 /login
root /usr/share/nginx/html/test-equal;#请求/login.html相当于寻找资源/usr/share/nginx/html/test-equal/login.html
}
location ^~ /prefix/ {#区分大小写且以/prefix/开头
root /usr/share/nginx/html/test-prefix;#root代表根目录,请求/prefix/prefix.html相当于寻找资源/usr/share/nginx/html/test-prefix/prefix/prefix.html
}
location ~ \.(png|jpg)$ {#不区分大小写且以.png或.jpg结尾
root /usr/share/nginx/html/test-suffix;#请求/suffix/a.png相当于寻找资源/usr/share/nginx/html/test-suffix/suffix/a.png
}
location ^~ /jd/ {# 区分大小写且以/jd/开头
proxy_pass https:
}
location ^~ /s {# /会匹配到所有的
proxy_pass https:
}
location / {# 会返回index.html
root /usr/share/nginx/html;
index index.html;
}
}
|
ログイン後にコピー
備考
場所のルートとエイリアスの違い:
例:
クライアントリクエスト: http://localhost:8080/user/info/a.txt
nginx が root で構成されている場合: nginx はリソースを検索します: /home/html/user/info/a.txt
1 2 3 | location ^~ /user {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->
root /home/html;#此处可以不以/结尾
}
|
ログイン後にコピー
nginx がエイリアスで構成されている場合: nginx はリソースを検索します: /home/html/info/a.txt
1 2 3 | location ^~ /user {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->
alias /home/html/;#此处以/结尾
}
|
ログイン後にコピー
以上がnginx の複数の場所を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。