nginx的location的匹配规则

在nginx的location下面匹配分为两类,普通匹配和正则匹配

 

普通匹配:
location = URI { configuration } #精确匹配
location ^~ URI { configuration } #非正则匹配
location [space] URI { configuration} # # 前缀匹配


正则匹配
location ~ URI { configuration } #大小写敏感匹配
location ~* URI { configuration } #大小写不敏感匹配

 

  

 

 

nginx 正则表达式的语法:

nginx 关于正则表达的支持提供了自己的处理方案,设置了自己的语法,这就好比是自己写了一个脚本,来处理正则表达式的结果。比如,我用正则表达式从一个文本中匹配出来一个结果,那么问题来了,我还的对这个结果进行处理,以下的符号都是对正则表达式的处理符号,他们在功能式看似好像和正则沾边,但是不属于正则的范畴。可以理解为处理正则的脚本或函数。

牛逼学习链接:https://www.cnblogs.com/linjiqin/p/5532119.html 

^~

^~  :标识符后面跟一个字符串。Nginx将在这个字符串匹配后停止进行正则表达式的匹配,如 location  ^~ /images/,它在匹配了/images/这个字符串后就停止搜索其它正则的location
非正则匹配,匹配该规则后,停止继续正则匹配。

 

空格

 

前缀匹配,匹配后,继续更长前缀匹配和正则匹配。

 

=

标识精确查找地址,如 location = / ,只会匹配uri为/的请求
精确匹配,匹配后停止后续匹配,直接执行该匹配后的configuration.

~

区分大小写的匹配
区分大小写的正则匹配,按顺序匹配,一旦匹配上即停止后续匹配。

~*

不区分大小写的匹配

!~

对区分大小写的匹配取非

!^*

对不区分大小写的匹配取非

 后面贴一个nginx配置文件中虚拟机中的server项

    server {
        listen       80;
        server_name  www.amber.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {                        # /是正则表达式, 下面的root,index是模块名字
            #root   html;                   #root目录指的是nginx安装目录/usr/local/nginx
            root   /web/www.amber.com;      #也可以在linux中定义一个绝对路径
            index  index.html index.htm;
            #auth_basic "secret";           #nginx的访问控制 
            #auth_basic_user_file  /usr/local/nginx/passwd.db;
        }

        location ~ \.php$ {                             #区分大小写
            proxy_pass http://192.168.244.11:80;        #proxy_pass是模块名字
        }

        location ~ \.(gif|jpg|jpeg|bmp|png|swf) {
            root   html;
        }

        location ~ /status {
            stub_status on;
            access_log off;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

  

posted @ 2018-11-01 16:20  solomon123  阅读(406)  评论(0编辑  收藏  举报