nginx:403 禁止用于位置的特定文本值



我在nginx配置中遇到了一个奇怪的问题。

一切正常。但是,如果我更改位置指令的值(同时保持所有内容绝对相同(,它将失败。

因此,以下配置有效:

location ~ ^/v1/works/(.*)$ {
...
...
}

但不是这个:

location ~ ^/v1/doesnotwork/(.*)$ {
...
...
}

我收到此错误日志:

access forbidden by rule, client: 100.97.0.0, server: my-host.com, request: "GET /v1/doesnotwork HTTP/1.1", host: "my-host.com"

似乎某些规则允许使用特定单词(在本例中为"works"(,但禁止在位置指令中使用另一个单词(在本例中为"donotwork"(。

可能是什么原因?nginx配置的哪一部分或proxy_pass配置的哪一部分可以使这样的规则成为可能?

我已经解决了这个问题。

原因是同一域的服务器块多次出现。

原作者首先尝试使用来自测试环境的一些服务,以及来自 prod 的其他一些服务。经过测试,终于纠正了服务器。但他忘了将两个块合并为一个。

服务器域的重新出现以及某些位置指令的重新出现导致了这种欺骗。

在将所有这些位置合并到单个服务器块后,问题得到了解决。

最新更新