我知道有两种方法可以解决这个问题。
的 分离配置中的允许列表: 适用于所有常见的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 add on模块从源代码重新编译NginX。使用lua脚本主动拒绝不支持的IP地址。见下的第二个例子 access_by_lua 。有多种方法可以使用添加。我建议使用 access_by_lua_file 将lua脚本放在外部位置。
access_by_lua
access_by_lua_file
这两种方法仍需要您付出一些努力。我不相信您的特定目标已经可以使用直接销售解决方案。
也许nginx.shared.dict( http://wiki.nginx.org/HttpLuaModule#lua_shared_dict )会帮助你吗?