1:Nginx location 規則匹配
^~ 標識符匹配后面跟一個字符串。匹配字符串后將停止對后續的正則表達式進行匹配。
如:location ^~ /images/, 在匹配了/images、這個字符串后就停止對后續的匹配
= 精准匹配,如:location=/,只會匹配urrl為/的請求
~ 區分大小寫的匹配
~* 不區分大小寫的匹配
!~ 對區分大小寫的匹配取非
!~* 對區分大小寫的匹配取非
/ 通用匹配,如果沒有其他匹配,任何匹配請求都會被匹配到
2:正則表達式
* 重復前面的字符0次或多次
? 重復前面的字符0次或1次
+ 重復前面的字符1次或多次
. 匹配除換行符以外的任意一個字符
(a | b) 匹配a或b
^ 以.....開頭
$ 以.....結尾
{n} 重復前面的字符n次
{n,} 重復前面的字符n次或更多次
{n,m} 重復前面的字符n次到m次
*? 重復前面的字符0次或多次 ,但盡可能的少重復
+? 重復前面的字符1次或更多次 ,但盡可能的少重復
?? 重復前面的字符0次或1次 ,但盡可能的少重復
{n,m} ? 重復前面的字符n次或m次 ,但盡可能的少重復
{n,} ? 重復前面的字符n次以上 ,但盡可能的少重復
3:正則補充
\w 匹配任意不是字母,數字,下划線,漢子的字符
\s 匹配任意不是空白字符串的字符
\D 匹配任意非數字的字符
\B 匹配不是單詞開頭或結束的位置
[a] 匹配a-z小寫字母的任意一個
[^a] 匹配除a以外的任意字符
4:Nginx location應用規則
location [=|~|~*|^~|!~|!~*] /url/{...}
默認值:no
使用字段:server
location參數根據URL的不同需求來進行位置配置。可以使用字符串與正則表達式匹配
location ~*.*\.jsp$ {
proxy_pass http://tomcat_server;
}
http://www.a.com/
5:匹配順序優先級
6:實際使用建議
實例:
要求輸入www.a.com/a.html 跳轉到www.a.com/file/a.html
[root@localhost ~]# vim /etc/init.d/nginx
location /a.html {
rewrite (.*) http://www.a.com/file/a.html break;
}
測試:
實例:
要求輸入www.a.com跳轉到 www.b.com
server {
listen 80;
server_name www.a.com;
charset uft-8;
access_log logs/a.com.access.log main;
location / {
root html;
index index.html index.htm;
}
if ($host = 'www.a.com') {
rewrite ^(.*)$ http://www.b.com;
}
}
server {
listen 80;
server_name www.b.com;
charset uft-8;
access_log logs/b.com.access.log main;
location / {
root html;
index index.html index.htm;
}
測試: