nginx 下 location 某个文件夹下某类文件

自己的解释:

~ ^/prefix/.*\.html$ 

解释:~ 表示后面跟的是正则,而且是区分大小写的( “~ ”区分大小写,“~* ”不区分大小写)。

^/prefix/.*\.html$  就是正则表达式了,^在正则里表示 以什么开始,/prefix/ 表示符合这个文件夹路径的。 “.*” 表示匹配单个字符多次。”\.” 表示转义 “.”  采用 “.” 本身,而非他在正则里的意思(非\r\n的单个字符)。 $ 表示已什么结尾。

//自己参考写的配置:
         location ~ ^/test/.*\.(json|gif|jpg|png|jpeg|html)$ {

        root   /data/test/;
        autoindex off;
        }

转自:http://www.cnblogs.com/lidabo/p/4169396.html

配置 3.2

server {

       listen       9090;

       server_name  localhost;

 

      

       location ~ ^/prefix/.*\.html$ {

           deny all;  

       }  

                 

                  location ~ \.html$ {

           allow all; 

       } 

 

}

 

测试结果:

URI 请求 配置 3.1 配置 3.2
curl http://localhost:9090/regextest.html 404 Not Found 404 Not Found
curl http://localhost:9090/prefix/regextest.html 404 Not Found 403 Forbidden

 

解释:

Location ~ ^/prefix/.*\.html$ {deny all;} 表示正则 location 对于以 /prefix/ 开头, .html 结尾的所有 URI 请求,都拒绝访问;   location ~\.html${allow all;} 表示正则 location 对于以 .html 结尾的 URI 请求,都允许访问。 实际上,prefix 的是 ~\.html$ 的子集。

在“配置 3.1 ”下,两个请求都匹配上 location ~\.html$ {allow all;} ,并且停止后面的搜索,于是都允许访问, 404 Not Found ;在“配置 3.2 ”下, /regextest.html 无法匹配 prefix ,于是继续搜索 ~\.html$ ,允许访问,于是 404 Not Found ;然而 /prefix/regextest.html 匹配到 prefix ,于是 deny all , 403 Forbidden 。

 

    原文作者:laokaizzz
    原文地址: https://blog.csdn.net/laokaizzz/article/details/51095475
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞