Nginx Ip白名单

Nginx Ip白名单,nginx,Nginx,我想将我的nginx代理服务器配置为只允许某些IP访问它 据我所知,这通常是在配置文件中完成的,带有允许和拒绝列表,但是如果可能的话,我需要一个不同的选项,因为我的白名单非常大。我还需要将此链接到一个网站,这样当用户登录时,如果用户的IP发生了更改,用户将能够更新该用户的IP 简而言之,白名单用户将能够使用我的代理服务器,但如果由于任何原因用户的IP发生变化,用户仍然可以登录到我的站点并更新白名单上的IP 我需要帮助的地方 nginx有没有办法从外部源读取IP白名单,比如htaccess或mys

我想将我的nginx代理服务器配置为只允许某些IP访问它

据我所知,这通常是在配置文件中完成的,带有允许和拒绝列表,但是如果可能的话,我需要一个不同的选项,因为我的白名单非常大。我还需要将此链接到一个网站,这样当用户登录时,如果用户的IP发生了更改,用户将能够更新该用户的IP

简而言之,白名单用户将能够使用我的代理服务器,但如果由于任何原因用户的IP发生变化,用户仍然可以登录到我的站点并更新白名单上的IP

我需要帮助的地方
nginx有没有办法从外部源读取IP白名单,比如htaccess或mysql?如果是这样,该列表的最佳格式是什么,以便可以轻松链接并自动更新?我计划让网站专业化,这样当用户登录到他们的帐户时,白名单会自动更新。因此,我希望我的白名单是设计师可以使用的最佳格式,以便更容易地将白名单与用户帐户集成。

我知道有两种方法可以解决此问题

  • 允许单独配置中的列表:适用于所有常见的NginX安装

    您可以将所有allow语句放在每个站点的一个简单文本文件中,该文件只包含allow语句。将其包含在客户端的服务器块下。根据需要使用脚本来更改列表。最后,每次更新允许列表时重新加载(而不是重新启动)nginx配置。这可能如下所示:

    cat /var/www-allow/client1-allow.conf
    allow 192.168.1.1;
    allow 10.0.0.1;
    
    cat /etc/nginx/sites/client1.conf
    ...
    server {
        include /var/www-allow/client1-allow.conf;
        deny all;
    }
    
    echo Test NginX configuration
    nginx -t
    
    echo Reload NginX configuration (**adjust for your setup**)
    service nginx reload
    
  • 使用嵌入式Lua:NginX所需的自定义编译

    使用第三方嵌入式Lua附加模块从源代码重新编译NginX。使用lua脚本主动拒绝不支持的IP地址。请参见下面的第二个示例。有多种方法可以使用附加组件。我建议使用
    accessbylua\u文件
    将lua脚本放在外部位置


  • 这两种方法仍然需要您做出一些努力。我不认为针对您的特定目标已经有了一个直接的解决方案。

    也许nginx.shared.dict()会对您有所帮助?

    client1-allow.conf可能是最好的方法,因为您可以随时更新它。我不知道是否需要跳转服务来获取任何技术?NginX服务不必重新启动,但必须指示它通过命令行或合适的脚本动态重新加载其配置。我使用
    service nginx reload
    ,它通过
    kill-HUP$pidfile
    向nginx发送HUP信号。如果在docker中,您可以使用
    docker exec nginx-s reload