我一直试图找出我的regex
或nginx config
的错误。我的nginx配置中有以下位置块
location ~ /v1/(tests|my/.*/tests|your/.*/test|our/.*/testers) {
proxy_pass http://127.0.0.1:8000;
}
Nginx正在端口8080
上运行,我有一个在端口8000
上运行的简单测试Web服务器。我用以下路径测试了这个
http://localhost:8080/v1/tests
(作品)http://localhost:8080/v1/my/a1/tests
(作品)http://localhost:8080/v1/my/%20/tests
(作品)http://localhost:8080/v1/my//tests
(在nginx服务器上 404 失败)http://localhost:8080/v1/my/%2F/tests
(在nginx服务器上 404 失败)我想知道为什么会这样,因为我与my/.*/tests
匹配,它应该匹配空字符串呢?我错过了什么吗?
感谢帮助!
答案 0 :(得分:0)
nginx
在执行测试(例如正则表达式)之前规范化URI。标准化过程的一部分是将连续的/
折叠成单个/
。
结果是my/tests
不是正则表达式的有效匹配。