一、Nginx location規則匹配
^~ 標識符匹配後面跟-一個字符串。匹配字符串後將中止對後續的正則表達式進行匹配,如location ^~ /images/ , 在匹配了/images/這個字符串後就中止對後續的正則匹配
= 精準匹配,如location=/,只會匹配url爲/的請求。
~ 區分大小寫的匹配。
~* 不區分大小寫的匹配。
!~ 對區分大小寫的匹配取非。
!~* 對不區分大小寫的匹配取非。
/ 通用匹配,若是沒有其它匹配,任何請求都會被匹配到
匹配順序優先級:
(location =)> (location 完整路徑)> (location ^~ 路徑) > (location ~,~*正則順序) >(location 部分起始位置) > (/)
二、正則表達式
*:重複前面的字符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次以上,但儘量少重複
三、正則表達式補充
\W:匹配任意不是字母,數字,下劃線,漢字的字符(特殊符號)
\S:匹配任意不是空白符的字符
\D:匹配任意非數字的字符
\B:匹配任意不是單詞開頭或結尾的位置
[a]:匹配單個字符a
[a-z]:匹配a-z小寫字符的任意一個
[^a]:匹配除了a之外的任意字符
[^abc]:匹配除了abc這幾個字母之外的任意字符
四、Nginx location應用規則
先寫一個location,後面匹配挑任意一個,加url的地址(網頁路徑)花括號裏寫最終要處理的動做
location [=|~|~*|^~|!~|!~*] /url/{...}
默認值:no
使用字段:server
location參數根據URL的不一樣需求來進行匹配,可使用字符串與正則表達式匹配
例:location ~* .*\.jsp$ {
proxy_pass http://tomcat_server;
}
(1)
http://www.a.com/
location = / {
#精準匹配 / ,主機名後面不能帶任何的字符串
[configuration A ]
}
(2)
location / {
#由於全部的地址都以 / 開頭,因此這條規則將匹配到全部的請求
#可是正則和最長字符串會優先匹配
[configuration B ]
}
(3)
location / documents/ {
#匹配任意以documents開頭的地址,匹配符合之後,還要繼續往下搜索
#只有後面的正則表達式沒有匹配到時,纔會採用這一條
[configuration C ]
}
(4)
location ~ / documents/Abc {
#匹配任意以documents開頭的地址,匹配符合之後,還要繼續往下搜索
#只有後面的正則表達式沒有匹配到時,纔會採用這一條
[configuration CC ]
}
(5)
location ^~ /images/ {
#匹配任意以images開頭的地址,匹配符合之後,還要繼續往下搜索
[configuration D ]
}
(6)
location ~*\.(gif|jpg|jpeg) {
#匹配全部以gif,jpg或jpeg結尾的請求
#然而,全部的請求/images/ 下的圖片會被config D 處理,由於 ^ ~ 到達不了這一條正則
[configuration E ]
}
(7)
location /images/ {
#字符匹配到 /images/,繼續往下,會發現 ^~ 存在
[configuration F ]
}
(8)
location /images/abc {
#最長字符串匹配到 /images/abc,繼續往下,會發現 ^~ 存在
[configuration G ]
}
六、實驗(須要兩臺虛擬機) 第一臺虛擬機確保安裝nginx 第二臺虛擬機上安裝確保搭建好LAMP (1)在第二臺虛擬機上:[root@localhost ~]# rpm -q nfs-utils rpcbind //查看有沒有安裝nfs-utils rpcbind這兩個軟件包 [root@localhost ~]# mkdir /wwwroot //建立一個文件 [root@localhost ~]# vim /etc/exports //添加如下內容 /wwwroot 192.168.200.112 (ro) [root@localhost ~]# systemctl restart rpcbind [root@localhost ~]# systemctl restart nfs (2)[root@localhost ~]# cd /wwwroot/ //在裏面添加一張圖片 rz (3)在第一臺虛擬機上: [root@localhost ~]# cd /usr/local/nginx/html/images/ //查看一下里面有在第二臺虛擬機上添加的圖片 [root@localhost html]# vim index.html //添加如下內容(把圖片加進去) <img src="images/wyb.jpg" /> (4)在網頁上訪問:192.168.200.112