前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Nginx实现IP域名过滤白名单

基于Nginx实现IP域名过滤白名单

作者头像
Diuut
发布2022-11-22 20:28:06
4K0
发布2022-11-22 20:28:06
举报
文章被收录于专栏:DiuutDiuut

需求: Nginx反向代理,配置接口名单+域名/IP白名单

解决此需求的背景其实本质是跨域问题,简而言之就是浏览器判断前端访问后端接口时,协议、域名、端口不一致判定有安全风险而禁止访问的一种安全同源策略。

此处商讨考量后认为在nginx层实现该需求比较合理,可以补充如下配置。

nginx.conf中进行配置:

代码语言:javascript
复制
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

Post Views: 15

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档