Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 限制对特定URL前缀的访问_Nginx_Kubernetes_Nginx Ingress - Fatal编程技术网

Nginx 限制对特定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开头的消息。坦率地说,即使在阅读了

我想阻止对服务器中所有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
开头的消息。坦率地说,即使在阅读了文档并尝试了各种方法之后,我似乎还没有弄清楚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工作得非常好。