Nginx geo 变量在 if 子句中不起作用

Nginx geo 变量在 if 子句中不起作用

使用 Nginx 1.4.6,Ubuntu 14.04 LTS。我在 http 部分有以下内容nginx.conf

geo $maintenance {
    default         1;
    86.161.27.175   0;
}

在我的网站配置中我有这个:

error_page 503 /static/errors/503.html;
location /mydir/ {
    if ($maintenance) {
        return 503;
    }
    try_files $uri $uri/ =404;
}

但是,我在浏览我的网站时总是收到 503 错误/mydir/,但对于我的 IP 来说,这种情况不应该发生。我仔细检查了一下,这绝对是我当前的 IP。我有另一个用于速率限制的地理部分,它工作正常。$maintenance在位置块上方手动设置为 0 就可以了。

为什么这不起作用?

答案1

发现问题了:我已为我的暂存站点启用了 CloudFlare,因此它收到的是 CloudFlare IP,而不是我的实际 IP。哎呀!

相关内容