没有合适的资源?快使用搜索试试~ 我知道了~
首页nginx动态添加访问白名单的方法
资源详情
资源评论
资源推荐

nginx动态添加访问白名单的方法动态添加访问白名单的方法
本篇文章主要介绍了nginx动态添加访问白名单的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参
考。一起跟随小编过来看看吧
本文实现的功能是:网站启用访问白名单,对于不在白名单中又需要访问的客户,只需打开一个不公开的网址,然后自动获得
2小时的访问权限,时间达到后自动删除访问权限
实现此功能需要以下几个步骤:实现此功能需要以下几个步骤:
nginx启用访问白名单
客户打开指定网址自动添加访问白名单
为网址添加简单的认证
每两个小时自动恢复默认白名单,删除临时IP访问权限
一、一、nginx配置访问白名单配置访问白名单
这个就比较简单了,简单贴一下配置:
............nginx.conf...........
geo $remote_addr $ip_whitelist {
default 0;
include ip_white.conf;
}
............server段............
location / {
if ($ip_whitelist = 1) {
break;
}
return 403;
}
启用白名单的IP写在ip_white.conf文件中,格式为: 8.8.8.8 1;,只需将IP按照格式写入ip_white.conf中即可获得访问权限。
二、使用二、使用LUA自动添加白名单自动添加白名单
nginx需配合lua模块才能实现这个功能,新建一个location,客户访问这个location时,使用lua拿到客户IP并调用shell脚本写入
ip_white.conf中,写入后自动reload nginx使配置生效,lua代码:
location /addip {
content_by_lua '
CLIENT_IP = ngx.req.get_headers()["X_real_ip"]
if CLIENT_IP == nil then
CLIENT_IP = ngx.req.get_headers()["X_Forwarded_For"]
end
if CLIENT_IP == nil then
CLIENT_IP = ngx.var.remote_addr
end
if CLIENT_IP == nil then
CLIENT_IP = "unknown"
end
ngx.header.content_type = "text/html;charset=UTF-8";
ngx.say("你的IP : "..CLIENT_IP.."<br/>");
os.execute("/opt/ngx_add.sh "..CLIENT_IP.."")
ngx.say("添加白名单完成,有效时间最长为2小时");
';
}
/opt/ngx_add.sh shell脚本内容:
#!/bin/bash
ngx_conf=/usr/local/nginx/conf/52os.net/ip_white.conf
ngx_back=/usr/local/nginx/conf/52os.net/ip_white.conf.default
result=`cat $ngx_conf |grep $1`
case $1 in
rec)
rm -rf $ngx_conf
cp $ngx_back $ngx_conf
/usr/local/nginx/sbin/nginx -s reload















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0