【问题标题】:Restrict access to a certain URL prefix限制对某个 URL 前缀的访问
【发布时间】:2020-11-06 00:41:58
【问题描述】:

我想阻止对我服务器中所有 URL 的访问,但以 /myapp/path 开头的 URL 除外,/myapp/path/nope 也应该被阻止。

我试过了:

nginx.org/server-snippets: |
  location = /myapp/path/nope { return 404; }
  location ^~ /myapp/path {}
  location / { return 404; }

但在以/myapp/path 开头的 URL 上也收到了 404 条消息。坦率地说,即使在阅读了文档并尝试了各种各样的事情之后,我似乎还没有弄清楚 nginx 如何确定要服务的位置。我的sn-p怎么了?谢谢!

【问题讨论】:

  • 从第三行省略 ^~ 会导致允许所有 URL...我不明白
  • 如果 root 的值设置不正确,您也会收到 404 响应。错误日志中是否有任何条目,文件nginx.org/server-snippets 包含在您的其余配置中的什么位置?
  • 没有错误,并且这个注解是入口 yaml 的一部分。除了 nginx.org/server-snippets 注释之外,入口运行良好。

标签: nginx kubernetes nginx-ingress


【解决方案1】:

最终我使用否定的正则表达式解决了这个问题。 在我的问题中,我错误地使用了位置和正则表达式,因为我从未告诉 nginx 如何处理我写的路径。

因此,为了限制对不以/myapp/path 开头的任何内容的访问,请使用:

location ~ ^/(?!myapp/path) { return 404; } # Or deny all;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 2016-07-07
    • 1970-01-01
    • 2019-02-15
    • 2016-10-19
    • 2014-02-05
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多