官方文档
需求背景
项目有两个端,分别是app端和web端,其中web端需要限制ip段范围,而app端必须对公网开放,因此无法使用ALB中的访问控制,无法满足现有需求。
因此觉得写一个可编程脚本,实现逻辑如下:
1.如果请求headers中有APP_PWD,代表是访问APP端的流量,则需要验证密码是否符合预期,如果符合则转发流量至后端
2.如果请求headers中没有APP_PWD,代表是访问Web端的流量,则需要验证ip是否在ip范围段内,如符合则转发流量至后端
3.不满足以上条件的情况,直接返回403页面
if $http_APP_PWD {
if ne($http_BOSCH_RBHP_APP_PWD, 'xsasxascLw7u') {
exit(403)
}
}
if not($http_APP_PWD) {
# 这里写具体的公网IP段,cidr自己想办法转换成正则表达式的形式,才能完成匹配
if not(match_re($remote_addr, '^(127\.39\..*|127\.40\..*|)')) {
exit(403)
}
}
配置完成后自己去页面上试验下,访问应该能达到预期效果

