Nginx 限制对特定URL前缀的访问
我想阻止对服务器中所有URL的访问,除了以Nginx 限制对特定URL前缀的访问,nginx,kubernetes,nginx-ingress,Nginx,Kubernetes,Nginx Ingress,我想阻止对服务器中所有URL的访问,除了以/myapp/path开头的URL,不包括/myapp/path/nope,也应该阻止这些URL 我试过: nginx.org/server-snippets: | location = /myapp/path/nope { return 404; } location ^~ /myapp/path {} location / { return 404; } 但在URL上也有404条以/myapp/path开头的消息。坦率地说,即使在阅读了
/myapp/path
开头的URL,不包括/myapp/path/nope
,也应该阻止这些URL
我试过:
nginx.org/server-snippets: |
location = /myapp/path/nope { return 404; }
location ^~ /myapp/path {}
location / { return 404; }
但在URL上也有404条以
/myapp/path
开头的消息。坦率地说,即使在阅读了文档并尝试了各种方法之后,我似乎还没有弄清楚nginx是如何确定服务的位置的。我的片段有什么问题?谢谢 最终我用一个负正则表达式解决了这个问题。
在我的问题中,我错误地使用了location和regex,因为我从未告诉nginx如何处理我编写的路径
因此,为了限制对非以/myapp/path
开头的任何内容的访问,请使用:
location ~ ^/(?!myapp/path) { return 404; } # Or deny all;
省略第三行中的
^ ~
将导致允许所有URL。。。我不明白如果root
的值设置不正确,您也会得到404响应。错误日志中是否有任何条目,配置的其余部分中包含的文件nginx.org/server snippets
在哪里?没有错误,此注释是ingress yaml的一部分。除了nginx.org/server snippets
注释之外,ingress工作得非常好。