带有白名单的nginx维护页面

时间:2014-05-03 17:17:54

标签: nginx lua http-status-code-503

对于我的网站,我希望能够提供一个维护503页面,但有一个ip-addresses的白名单,可以正常使用该网站

我是否必须在lua中制作这样的东西?

我看到一些像

这样的问题

Nginx Ip Whitelist

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

解释了如何单独执行此操作,但我希望将它们组合在一起,以便我可以将网站脱机以进行外部世界,但仍然可以从某些IP地址进行正常测试

2 个答案:

答案 0 :(得分:2)

您可以使用ngx_http_geo_module:

geo $denied {
    default 1; # nobody is allowed access by default

    # but people from the following networks/ip addresses are allowed access
    include whitelist;
    127.0.0.1      0;
    192.168.1.0/24 0;
}

server {
    location / {
        if ($denied) {
            return 503;
        }
    }
}

答案 1 :(得分:0)

不需要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;
}

适用于位置块以及以下任何一个:http,server,location,limit_except。

如果您坚持使用lua,请按照instructions to get lua working进行操作,然后您可以使用类似openresty自述文件中的示例:

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
    }
}