[転帖]nginx location配置の詳細説明
4691 ワード
nginx locationの配置の詳細説明
構文ルール: にマッチすることを示します。 にマッチすることを示します。 である。 複数のlocationの配置の場合、マッチング順は(資料を参考にして来て、まだ実際に検証していないので、試してみれば分かります。こだわる必要はなく、参考までに):
まずマッチング=、次にマッチングします。次はファイルの中の順序で正則にマッチします。最後は汎用マッチングに渡します。マッチングが成功した場合、マッチングを停止し、要求を現在のマッチング規則で処理します。
例として、以下のような適合規則があります。
ルートディレクトリにアクセスする/たとえばhttp://localhost/ ルールAにマッチする
アクセスhttp://localhost/login ルールBにマッチしますhttp://localhost/register 一致ルールH
アクセスhttp://localhost/static/a.html マッチングルールC
アクセスhttp://localhost/a.gifを選択します。http://localhost/b.jpg ルールDとルールEに適合するが、規則Dの順序が優先され、ルールEは機能しない。http://localhost/static/c.png ルールCに優先的にマッチします。
アクセスhttp://localhost/a.PNG ルールEは、ルールDにマッチしないので、ルールEは、大文字と小文字を区別しない。
アクセスhttp://localhost/a.xhtml ルールFとルールGは一致しません。http://localhost/a.XHTMLルールGは一致しません。大文字と小文字は区別されていません。ルールF、ルールGは排除法に属しています。適合規則は合致していますが、一致しないので、実際の応用にはどこで使われているかを考えてみます。
アクセスhttp://localhost/category/id/1111 最終的にルールHにマッチします。以上の規則は全部一致しないので、この時は、FastCGI(php)、tomcat(jsp)、nginxが方向プロキシサーバとして存在するべきです。
したがって、実際に使用する場合、個人的には少なくとも3つの適合規則の定義があると思います。
三、ReWrite文法
1、以下は判断できる表現です。
2、以下は判定のためのグローバル変数です。
例:http://localhost:88/test1/test2/test.php
http://outofmemory.cn/code-snippet/742/nginx-location-configuration-xiangxi-explain
構文ルール:
location [=|~|~*|^~] /uri/ { … }
=
最初は正確なマッチングを示しています。^~
最初はuriを表していますが、ある通常の文字列からスタートして、urlパスにマッチすると理解すればいいです。nginxはurlを符号化しないので、/static/20%/aaを要求します。規則^~/static/aaにマッチします。~
冒頭に大文字と小文字を区別する正則が~*
はじめに、大文字と小文字を区別しない正則が!~
および!~*
は、それぞれ、大文字と小文字とを区別して一致しない正則/
汎用マッチングでは、どの要求も一致します。まずマッチング=、次にマッチングします。次はファイルの中の順序で正則にマッチします。最後は汎用マッチングに渡します。マッチングが成功した場合、マッチングを停止し、要求を現在のマッチング規則で処理します。
例として、以下のような適合規則があります。
location = / {
# A
}
location = /login {
# B
}
location ^~ /static/ {
# C
}
location ~ \.(gif|jpg|png|js|css)$ {
# D
}
location ~* \.png$ {
# E
}
location !~ \.xhtml$ {
# F
}
location !~* \.xhtml$ {
# G
}
location / {
# H
}
その効果は以下の通りです。ルートディレクトリにアクセスする/たとえばhttp://localhost/ ルールAにマッチする
アクセスhttp://localhost/login ルールBにマッチしますhttp://localhost/register 一致ルールH
アクセスhttp://localhost/static/a.html マッチングルールC
アクセスhttp://localhost/a.gifを選択します。http://localhost/b.jpg ルールDとルールEに適合するが、規則Dの順序が優先され、ルールEは機能しない。http://localhost/static/c.png ルールCに優先的にマッチします。
アクセスhttp://localhost/a.PNG ルールEは、ルールDにマッチしないので、ルールEは、大文字と小文字を区別しない。
アクセスhttp://localhost/a.xhtml ルールFとルールGは一致しません。http://localhost/a.XHTMLルールGは一致しません。大文字と小文字は区別されていません。ルールF、ルールGは排除法に属しています。適合規則は合致していますが、一致しないので、実際の応用にはどこで使われているかを考えてみます。
アクセスhttp://localhost/category/id/1111 最終的にルールHにマッチします。以上の規則は全部一致しないので、この時は、FastCGI(php)、tomcat(jsp)、nginxが方向プロキシサーバとして存在するべきです。
したがって、実際に使用する場合、個人的には少なくとも3つの適合規則の定義があると思います。
# , , , 。
# ,
#
location = / {
proxy_pass http://tomcat:8080/index
}
# , nginx http
# , ,
location ^~ /static/ {
root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
# ,
# ,
# , .php,.jsp
location / {
proxy_pass http://tomcat:8080/
}
nginxの他の構成情報紹介三、ReWrite文法
last
– 基本的にはこのFlaGを使います。break
– Rewirteを中止し、redirect
に引き続きマッチしませんでした。 – 一時リダイレクトされたHTTP状態302 permanent
を返します。 – 永久リダイレクトのHTTP状態301を返します。1、以下は判断できる表現です。
-f
および!-f
は、ファイル-d
および!-d
が存在するか否かを判断するために使用され、ディレクトリ-e
および!-e
が存在するか否かを判断するために使用される。ファイルまたはディレクトリ-x
および!-x
が存在するか否かを判断するために使用される。2、以下は判定のためのグローバル変数です。
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:
ginx/html
$request_filename:D:
ginx/html/test1/test2/test.php
四、Redirect文法server {
listen 80;
server_name start.igrow.cn;
index index.html index.php;
root html;
if ($http_host !~ "^star\.igrow\.cn$" {
rewrite ^(.*) http://star.igrow.cn$1 redirect;
}
}
五、防犯チェーンlocation ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite ^/ http://$host/logo.png;
}
}
六、ファイルタイプによって有効期限を設定するlocation ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
七、あるディレクトリへのアクセス禁止location ~* \.(txt|doc)${
root /data/www/wwwroot/linuxtone/test;
deny all;
}
添付:使用可能なグローバル変数の一部$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query