Nginx如何设置IP白名单
我想配置我的nginx代理服务器只允许某些IP访问它。
据我所知,这通常是在配置文件中,允许和拒绝列表,但我需要一个不同的选项,如果可能的话,因为我的白名单很大。我还需要将其链接到一个网站,以便当用户登录时,用户将能够更新用户的IP,如果它已更改。
白名单用户将能够使用我的代理服务器,但如果由于任何原因用户的IP被更改,用户仍然可以登录到我的网站并更新该白名单的IP。
有没有办法nginx从外部源,从像htaccess或mysql的读取IP白名单?如果有,那么该列表的最佳格式是什么,以便它可以轻松链接并自动更新?我想让网站专业一些,以便当用户登录到他们的帐户时,白名单会自动更新。因此,我希望我的白名单是最佳的格式,以便于将白名单与用户帐户集成。
A:
有两种方式可以解决这个问题。
1.允许列表在单独的配置:
您可以将所有allow语句放在一个简单的文本文件中,每个站点只包含allow语句。 包括在客户端的server块下。 根据需要使用脚本来更改列表。 最后在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
2.使用嵌入式Lua:需要自定义编译Nginx
从源重新编译Nginx以添加第三方嵌入式Lua模块。 使用lua脚本主动拒绝不受支持的IP地址。 请参阅access_by_lua下的第二个示例。 我建议使用access_by_lua_file来完成此需求。
VIA.https://www.centos.bz/question/nginx-ip-whitelist/