如何在不传递列表的情况下设置一系列远程IP地址



我有这个服务器块:

server {
    server_name doamin.tld;
    set $maintenance on;
    if ($remote_addr ~ (127.0.0.1|10.1.1.10)) {
        set $maintenance off;
    }
    if ($maintenance = on) {
        return 503;
    }
    error_page 503 @maintenance;
    location @maintenance {
        root /var/www/html/global;
        rewrite ^(.*)$ /holding-page.html break;
    }
    root         html;
    access_log logs/doamin.tld.access.log;
    error_log logs/doamin.tld.error.log;
    include ../conf/default.d/location.conf;

}

将列表传递给$remote_addr而不是像(127.0.0.1 | etceet ...)的正确方法是什么?

使用nginx Map指令根据$remote_addr

设置$maintenance
map $remote_addr $maintenance {
    default       on;
    127.0.0.1     off;
    10.1.1.10     off;
    10.*.1.*     off;
}
server {
    server_name doamin.tld;
    if ($maintenance = on) {
        return 503;
    }
    # ... your code ...
}

如果要在单独的文件中获取IPS列表,请查看Include指令。

最新更新