V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dengsq
V2EX  ›  程序员

一个正则问题的请教

  •  
  •   dengsq · 2021-03-27 17:24:35 +08:00 · 1240 次点击
    这是一个创建于 1119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在配置一个 Nginx location 的禁止访问路径,碰到一个正则的问题...

    要求是这样的,如:

    对于 /users 开头的地址,只允许访问 /users/self/* 下的路径
    
    /users/a 不允许访问
    /users/b 不允许访问
    /users/self/a 允许访问
    

    然后其他的地址都不做限制,这个 localtion 要如何写好呢?

    目前参照网上博客的写法如下,但是条件是需要取反的

    location ~* /users/self/* {
    	deny all;
    	return 403;	
    }
    //这样子是全部禁止访问了,需要取反,还不能影响其他路径
    
    3 条回复    2021-03-27 17:53:24 +08:00
    gstqc
        1
    gstqc  
       2021-03-27 17:27:17 +08:00 via Android
    location ^~ /user/self/
    location /user/ {deny all; }
    dengsq
        2
    dengsq  
    OP
       2021-03-27 17:40:17 +08:00
    @gstqc 我一直在想两个条件的表达式,怎么取交集...
    nginx 不太熟,没想到可以写两个,谢谢老哥了哈哈
    gstqc
        3
    gstqc  
       2021-03-27 17:53:24 +08:00 via Android
    你看下 location 的匹配规则
    ^~ 表示匹配到之后,忽略其余 location 匹配
    不同匹配模式也有先后顺序
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   928 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 111ms · UTC 20:00 · PVG 04:00 · LAX 13:00 · JFK 16:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.