Nginx允许返回404

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

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

这似乎从第三方访问时正确地返回403,但是当被特权方访问时,返回404页面。 如果我完全禁用此节,则返回访问权限,各方都可以再次加载pipe理站点。 因此,我想知道为什么一个404被退回给特权方,当所有的节都允许一个IP …

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

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

在nginx中,位置块没有链接,最精确的位置块用于请求。 正则expression式的location ~ \.php$ (比如location ~ \.php$ )的location ~ \.php$比上面指定的更多的位置块要less。

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