需求:
Nginx反向代理,配置接口名单+域名/IP白名单
解决此需求的背景其实本质是跨域问题,简而言之就是浏览器判断前端访问后端接口时,协议、域名、端口不一致判定有安全风险而禁止访问的一种安全同源策略。
此处商讨考量后认为在nginx层实现该需求比较合理,可以补充如下配置。
nginx.conf中进行配置:
map $http_origin $corsHost {
default "";
"~http://www.diuut.com" http://www.diuut.com;
"~http://diuut.com" http://diuut.com;
"~https://www.diuut.com" https://www.diuut.com;
"~https://diuut.com" https://diuut.com;
}
#此处配置的是放行白名单,也可以替换成IP
server
{
listen 80;
listen 443 ssl http2;
server_name diuut.com www.diuut.com;
index index.php index.html index.htm default.php default.htm default.html;
#.....略过其他配置.......
location /restfull/ {
#上下文可替换为其他接口调用上下文
proxy_pass http://localhost:11000/;
set $flag 0;
if ( $http_origin != "" ) {
set $flag "${flag}1";
#http_origin不为空
}
if ($corsHost = "" ) {
set $flag "${flag}2";
#并且不在白名单中
}
if ($flag = "012") {
return 403;
}
}
access_log /www/wwwlogs/diuutcom.log main;
error_log /www/wwwlogs/diuut.com.error.log;
}
配置完成后 ./nginx -s reload重新加载配置后即可生效。
测试效果:
达到预期目的
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:
https://cloud.tencent.com/developer/support-plan?invite_code=ujabyts6k73f
您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan
作者申请此计划后将作者的文章进行搬迁同步到社区的专栏下,你只需要简单填写一下表单申请即可,我们会给作者提供包括流量、云服务器等,另外还有些周边礼物
现在ai爬虫太多,要是能过滤下这个更牛