我想配置我的nginx代理服务器只允许某些IP访问它.
据我所知,这通常在配置文件中完成,包含allow和deny列表,但如果可能的话我需要一个不同的选项,因为我的白名单非常大.我还需要将其链接到网站,以便在用户登录时,如果用户的IP已更改,则用户将能够更新用户的IP.
简而言之,白名单用户将能够使用我的代理服务器,但如果用户的IP因任何原因发生变化,用户仍然可以登录我的网站并更新该白名单IP.
有没有办法让nginx从外部源读取IP白名单,比如htaccess或mysql?如果是这样,该列表的最佳格式是什么,以便它可以轻松链接并自动更新?我打算专门构建网站,以便当用户登录其帐户时,白名单会自动更新.因此,我希望我的白名单符合设计师使用的最佳格式,以便更轻松地将白名单与用户帐户集成.
Kev*_*udé 39
我知道有两种方法可以解决这个问题.
分离配置中的允许列表:适用于所有常见的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
Run Code Online (Sandbox Code Playgroud)使用嵌入式Lua:NginX的必需自定义编译
使用第三方嵌入式Lua add on模块从源代码重新编译NginX.使用lua脚本主动拒绝不支持的IP地址.见下的第二个例子access_by_lua.有多种方法可以使用添加.我建议使用access_by_lua_filelua脚本放在外部位置.
这两种方法仍需要您付出一些努力.我不相信您的特定目标已经可以使用直接销售解决方案.
| 归档时间: |
|
| 查看次数: |
33874 次 |
| 最近记录: |