一个正则问题的请教

2021-03-27 17:24:35 +08:00
 dengsq

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

要求是这样的,如:

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

/users/a 不允许访问
/users/b 不允许访问
/users/self/a 允许访问

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

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

location ~* /users/self/* {
	deny all;
	return 403;	
}
//这样子是全部禁止访问了,需要取反,还不能影响其他路径
1411 次点击
所在节点    程序员
3 条回复
0ZXYDDu796nVCFxq
2021-03-27 17:27:17 +08:00
location ^~ /user/self/
location /user/ {deny all; }
dengsq
2021-03-27 17:40:17 +08:00
@gstqc 我一直在想两个条件的表达式,怎么取交集...
nginx 不太熟,没想到可以写两个,谢谢老哥了哈哈
0ZXYDDu796nVCFxq
2021-03-27 17:53:24 +08:00
你看下 location 的匹配规则
^~ 表示匹配到之后,忽略其余 location 匹配
不同匹配模式也有先后顺序

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/765713

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX