公司合规要求,后台地址限制外网访问,所以通过匹配进行限制,但通过nginx deny allow进行设置无法生效,故通过用户真实IP进行判断,步骤如下:
1)环境介绍:
场景: 前端SLB--->nginx---->proxy
2)配置SLB
开启Xforwardfor 记录用户真实IP
SLB其它配置,可去阿里云产品页面查询
3)查看access访问日志,确定判断哪个字段去限制IP访问
直接解析到指定ECS IP
可以通过 localtion 的 allow 与 deny 去控制访问IP
通过waf解析到 slb 的IP 在代理到服务器IP
这个时候我们就需要判断$http_x_forwarded_for字段去控制访问权限
4)nginx修改配置
添加到server 标签内
#-----------------------------IP白名单-----------------------------
set $allow true;
if ($http_x_forwarded_for ~ "白名单IP1|白名单IP2"){ #如果用户真实IP是后面列出的
set $allow false; #那allow状态为false
}
if ($allow != false){ #如何状态不为flase 就返回404,也就是说不是授权的用户,就返回404
return 404;
}
二、阿里云SLB场景使用Nginx封用户真实IP
1.环境与上面一致
2.tomcat开启X-Forwarded-For日志功能
开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中,修改AccessLogValve日志纪录功能为如下内容:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-Forwarded-For}i %h %l %u %t %r %s %b" />
提示:修改完重启生效!!
下午被的日志:(筛选访问公司网站前10 的IP地址)
[root@node2 ~]# awk -F "[ ]" '{print $1}' /home/wwwlogs/access.log |sort -nr|uniq -c|sort -nr|head -n 10
3.Nginx配置(安装不解释了)
在Server标签下添加如下几行
set $allow true;
if ($http_x_forwarded_for ~ "121.42.0.30|121.42.0.38|121.42.0.36|121.42.0.15121.42.0.37"){
set $allow false;
}
if ($allow = false){
return 404;
}
#提示:IP添加在上面!
小结: 因为无法禁止用户进行访问,我们设置404可以让IP无法进行访问数据库。不然数据库会被查询语句进行刷爆
- QQ精品交流群
-
- 微信公众号
-
2021年12月1日 下午12:11 沙发
nginx评论测试