Nginx‘允许’返回 404

Nginx‘允许’返回 404

根据我的访问日志,我有一个网站,每当用户加载网站的管理页面时,都会点击“GET /admin/ HTTP/1.1”。我想将一些 IP 列入白名单以访问此页面,因此我添加了以下规则:

location /admin/ {
    allow $whitelistIP;
    deny all;
}

当第三方访问时,这似乎可以正确返回 403,但当特权方访问时,将返回 404 页面。如果我完全禁用此节,则将返回访问权限,并且所有各方都可以再次加载管理站点。因此,我想知道为什么特权方会返回 404,而此节所做的只是允许 IP...

答案1

编辑:这个答案很可能是错误的。

如果您/admin/通常通过 FastCGI 提供 PHP,那么问题在于您上面显示的位置块覆盖了 PHP 脚本的默认位置块。

在 nginx 中,位置块不是链接的,最精确的位置块用于请求。使用正则表达式的位置(如location ~ \.php$)的优先级低于您上面指定的更具体的位置块。

另一个问题点可能是此位置块覆盖了通用 URL 重写块。

相关内容