Nginx 维护页面排除某些 IP

Nginx 维护页面排除某些 IP
location / {

#               if($remote_addr != 99.99.99.99){
                        return 503;
#               }
}

当前 503 页面运行良好,但如果我尝试添加 IP 排除,如上所示

nginx 重启时出现以下错误

 nginx: [emerg] unknown directive "if($remote_addr" in /etc/nginx/sites-enabled/mysite:74

所有在线指南都指出要使用上述 $remote_addr,有什么原因导致我的不起作用吗?

更新

目前这向所有访问者显示维护,包括 99 个访问者(是的,我用我的真实 IP 替换了它)。

map $remote_addr $condition {
        default 1;
        99.99.99.99 0;
}
Server{
        location / {
                if ($condition) {
                        return 503;
                }
        }
}

同样使用 remote_host 我得到 nginx 未知的“remote_host”变量,

仍然无法让它将我的 IP 从 503 中排除

答案1

我用了nginx 地图模块因定期维护例外情况。

例如:

  1. 将 $remote_host 映射到 $maint_except


map $remote_host $maint_switch {
    default       1;

99.99.99.99   0;

}

  1. 检查 $maint_switch 而不是 $remote_addr
location / { if ($maint_switch) { return 503; } }

相关内容