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/

Nginx正则及 Location匹配!

 Nginx正则及 Location匹配!Nginx正则及 Location匹配!

Nginx正则及 Location匹配!

Nginx正则及 Location匹配!

5:匹配顺序优先级

Nginx正则及 Location匹配!

6:实际使用建议

Nginx正则及 Location匹配!

Nginx正则及 Location匹配!

实例:

要求输入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;

}

测试:

Nginx正则及 Location匹配!

实例:

要求输入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;

        }

 测试:

Nginx正则及 Location匹配!