我想我的配置nginx的代理服务器只允许某些IP地址来访问它。
据我所知,这通常在配置文件中完成,以允许和拒绝列表,但我需要一个不同的选择,如果可能的话,因为我的白名单是非常大的。 我也需要这个链接到一个网站,这样当用户登录时,用户将能够更新用户的IP,如果它已经改变了。
总之,列入白名单的用户将能够使用我的代理服务器,但如果出于任何原因,用户的IP变化,用户仍然可以登录到我的网站并更新IP白名单。
当我需要帮助
是否有nginx的方法来读取来自外部源的IP白名单,从类似的htaccess或MySQL? 如果是这样,这将是该列表的最佳格式,以便它可以很容易地联系到,并自动更新? 我打算让现场专业打造的,这样当用户登录到他们的帐户,白名单会自动更新。 因此,我要像我的白名单是在最佳格式为设计师一起工作,以使其更容易添加到白名单与用户帐户整合。
有两种方法,我知道你能解决这个问题。
允许列表中分离配置: 适用于所有常见的Nginx安装
您可以将所有允许的语句在一个简单的文本文件,每个站点,没有包含任何内容,但允许语句。 包括在客户端的服务器模块。 根据需要修改列表使用脚本。 每次更新允许列表中的时间最后重装(不重新启动)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地址。 见下方的第二示例access_by_lua
。 有很多种,你可以使用添加的方式。 我建议使用access_by_lua_file
把LUA脚本外部位置。
这两种方法仍然需要你做一些努力。 我不相信一个简易的解决方案已经可以为您的具体目标。
也许nginx.shared.dict( http://wiki.nginx.org/HttpLuaModule#lua_shared_dict )会帮助你?