nginx 代理转发控制过滤源地址的请求


因为nginx配置文件中不支持逻辑运算,所以需要同时满足多个条件的话 可以用如下方式

set $flag 0; # 设置个初始值
if ($uri !~ (/aaa|/bbb/ccc|/ddd|/eee|/fff/v2n)){   #判断请求的uri 里面有没有包含这些内容("/app"  "/bbb/ccc"  "/ddd"   "/eee"  "/fff/v2n") 
set $flag "${flag}1";#如果不包含   赋值为01
}
if ($host ~ ^(www.aa.bb)){# 如果是通过域名www.aa.bb 访问进来的
set $flag "${flag}1";                # 赋值为011
}
if ($flag = "011"){
return 403;                     #返回403状态码      整体就是从域名www.aa.bb请求进来的 且uri内容不包含"/app"  "/bbb/ccc"  "/ddd"   "/eee"  "/fff/v2n"的都返回403
}

为了方便验证观察 可以在nginx的日志设置 log_format main里面加两个参数  "$host"  "$flag"  来打印出来 请求来源地址 和flag值

这样就做到了控制

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM