nginx location介紹
Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用來為匹配的 URI 進行配置,URI 即語法中的”/uri/”,可以是字符串或正則表達式。但如果要使用正則表達式,則必須指定前綴。
nginx location語法
基本語法:location [=|~|~*|^~] /uri/ { … }
= 嚴格匹配。如果這個查詢匹配,那麼將停止搜索並立即處理此請求。
~ 為區分大小寫匹配(可用正則表達式)
~* 為不區分大小寫匹配(可用正則表達式)
!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
^~ 如果把這個前綴用於一個常規字符串,那麼告訴nginx 如果路徑匹配那麼不測試正則表達式。
Location語法語法:location [=|~|~*|^~] /uri/ { … }
注:
1、~ 為區分大小寫匹配
2、~* 為不區分大小寫匹配
3、!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
示例一:
location / { }
匹配任何查詢,因為所有請求都以 / 開頭。但是正則表達式規則將被優先和查詢匹配。
示例二:
代碼如下 location =/ {}僅僅匹配/
示例三:
代碼如下 location ~* .(gif|jpg|jpeg)$ {注:不區分大小寫匹配任何以gif,jpg,jpeg結尾的文件
nginx location應用實例
location = / {
# 只匹配 / 查詢。
}location / {
# 匹配任何查詢,因為所有請求都已 / 開頭。但是正則表達式規則和長的塊規則將被優先和查詢匹配。
}location ^~ /images/ {
# 匹配任何已 /images/ 開頭的任何查詢並且停止搜索。任何正則表達式將不會被測試。
}location ~* .(gif|jpg|jpeg)$ {
# 匹配任何已 gif、jpg 或 jpeg 結尾的請求。
}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_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri