語法規則
location [=|~|~*|^~] /uri/ { … }
- = 開頭表示精確匹配
- ^~ 開頭表示uri以某個常規字符串開頭,理解爲匹配 url路徑即可。nginx不對url做編碼,因此請求爲/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。以xx開頭
- ~ 開頭表示區分大小寫的正則匹配 以xx結尾
- ~* 開頭表示不區分大小寫的正則匹配 以xx結尾
- !~和!~*分別爲區分大小寫不匹配及不區分大小寫不匹配 的正則
- / 通用匹配,任何請求都會匹配到。
匹配順序
首先精確匹配 = -> 其次以xx開頭匹配^~ -> 然後是按文件中順序的正則匹配 -> 最後是交給 / 通用匹配。
當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
常用的location匹配規則
- 配置指定文件名
# icon
location = /favicon.ico {
root images; # 文件在images目錄中
expires 7d; # 緩存7天
}
- 根據文件名模糊匹配
# 百度統一驗證
location ~* ^/baidu_verify_[\w]+.html$ {
root html;
}
- 路徑部分匹配
# 靜態圖片
location ^~ /cdn-images/ {
alias images/; # 注意使用的alias及後面的/
expires 7d;
}
- 動靜分離
# 靜態文件
location ~* \.(html|jpg|png)$ {
root cloud-web;
index index.html index.htm;
}
# 動態請求
location ~* /hbm/ {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.0.1.210:8769;
}