用IP白名单的方式维护Nginx页面。

我希望能够在我的网站上放置一个维护503页面,但同时还能够设置一个IP白名单,这些IP地址仍可正常使用网站。

我需要像这样在lua中编写某些东西吗?

我看到一些类似的问题:

Nginx Ip Whitelist

How can I setup a custom 503 error page in NGINX?

它们单独讲解如何实现,但我希望将它们结合起来,以便我可以将网站针对外部世界进行下线维护,但仍然可以从特定的IP地址正常测试它。

点赞
用户2820422
用户2820422

你可以使用 ngx_http_geo_module 模块:

geo $denied {
    default 1; # 默认情况下不允许任何人访问

    # 但是,以下网络/IP地址的人可以访问
    include whitelist;
    127.0.0.1      0;
    192.168.1.0/24 0;
}

server {
    location / {
        if ($denied) {
            return 503;
        }
    }
}
2014-05-03 19:48:57
用户1054423
用户1054423

不需要使用lua,只需使用ngx_http_access_module

location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

此配置适用于 location /、http、server、location、limit_except 等块。

如果您坚持要使用lua,请按照lua-nginx-module的指南安装lua,然后可以使用类似于openresty readme的示例:

location / {
    access_by_lua_block {
        -- check the client IP address is in our black list
        if ngx.var.remote_addr == "132.5.72.3" then
            ngx.exit(ngx.HTTP_FORBIDDEN)
        end
    }
}
2017-08-31 19:22:18