Nginx正則及 Location匹配!


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;

 

        }

 

 測試:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM