带有ip白名单的nginx维护页面

Posted

技术标签:

【中文标题】带有ip白名单的nginx维护页面【英文标题】:nginx maintainence page with ip whitelist 【发布时间】:2014-06-20 06:47:16 【问题描述】:

对于我的网站,我希望能够建立一个维护 503 页面,但有一个 IP 地址白名单,可以正常使用该网站

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

我看到一些问题,例如

nginx Ip Whitelist

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

其中解释了如何单独执行此操作,但我想将它们组合起来,以便我可以将站点离线以供外部世界使用,但仍然能够从某些 IP 地址正常测试它

【问题讨论】:

【参考方案1】:

您可以使用 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;
        
    

【讨论】:

如果在 nginx nginx.com/resources/wiki/start/topics/depth/ifisevil 中是邪恶的。另外,既然可以使用ngx_http_access_module,为什么还要使用地理? 在“if is evil”页面的顶部,声明使用 return 和 if 是 100% 安全的。【参考方案2】:

不需要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、服务器、位置、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
    

【讨论】:

以上是关于带有ip白名单的nginx维护页面的主要内容,如果未能解决你的问题,请参考以下文章

ini NGINX IP白名单Facebook

nginx的白名单

网站通过nginx设置黑/白名单IP限制国家城市IP访问限制

“阿里云”ECS服务器怎么设置IP白名单?

微信小程序 IP白名单是指外网IP还是内网IP呢?如:192.168.2.144还是外网的IP?

Nginx白名单设置