专有云datav代理踩坑

简介: 记录了datav专有云版本下,转发代理的实现

专有云datav代理踩坑

问题描述

datav开发完成之后,发布是通过在datav页面点击发布后获得发布链接,

image.png

一般情况下都是通过直接访问发布链接的方式进行页面访问,但是在一些特定的场景下会需要将这个地址进行代理后再进行访问,项目上碰到的场景是这样的

  1. datav版本为专有云datav版本,部署在内网服务器上,并且没有进行互联网透出
  2. 部分页面需要通过互联网方式进行访问

解决过程

默认情况下datav的访问链路为

image.png

想要开通公网访问的话,最直接的方式就是配置一个映射代理,链路如下:

image.png

这个映射配置比较简单,很快我们就配置完成了,但是在随之后的验证中发现了一个致命的问题导致页面无法正常访问:

  1. 互联网映射域名和内网的DataV服务的域名不一致
  2. DataV服务的域名是通过配置的方式硬编码在了配置文件里,没有根据当前实际访问的代理域名地址对对应的资源文件进行替换或者使用相对路径进行访问

以上两点直接导致的后果是:DataV服务没有办法被代理!

问题到这里似乎无解了,除非是互联网映射的域名保持和内网访问的域名一致,这个申请下来又是需要不少的时间,在与DataV研发团队的沟通中,我们摸索出了另外一条路:

image.png

在这里的nginx,不仅仅是转发的功能而已,还用到了它的插件sub_filter,简而言之,就是在转发的时候查找和替换对应的文本,这个插件是需要单独编译安装的,安装完成后,对nginx进行配置,核心点在于配置需要替换的文本

          proxy_set_header Accept-Encoding "";
          sub_filter '待替换的文本' '替换后的文本';
          sub_filter_types  css/html;
          sub_filter_once off;

同时这里也需要注意一个坑,当接收请求需要压缩的时候 Accept-Encoding配置为gzip时,sub_filter替换会失效,所以在这里增加了一个配置proxy_set_header Accept-Encoding "";  声明不进行压缩。

至此,页面已经能够通过代理的方式进行访问。

后续

在发布的datav页面开启token校验的时候,此时会涉及到页面的Cookie的设置,因为我们上面是通过nginx进行了一次代理,就需要增加nginx的配置proxy_cookie_domain 代理前的域名 代理后的域名; 来实现前后端cookie域名转换,保证顺利传递。

image.png

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
阿里云实时数仓实战 - 用户行为数仓搭建
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求:熟练掌握 SQL 语法熟悉 Linux 命令,对 Hadoop 大数据体系有一定的了解   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
存储 机器学习/深度学习 人工智能
机器学习 | NumPy超详细教程
机器学习 | NumPy超详细教程
604 0
|
Linux Windows
Linux下如何修改host文件
Linux下如何修改host文件
526 0
|
10月前
|
人工智能 自然语言处理 安全
HarmonyOS NEXT+AI打造智能助手APP(适配DeepSeek)
华为仓颉编程语言与HarmonyOS NEXT结合AI大模型,开创智能助手APP开发新纪元。仓颉语言以自然化编程降低门槛,HarmonyOS NEXT提供流畅安全的系统支持,AI大模型赋予助手强大交互能力。实战课程覆盖智能对话、写作、画图等6大核心业务,模块化开发助你掌握全流程技能。参考资料及开源教程助力学习,开启智能应用开发新篇章。
600 10
HarmonyOS NEXT+AI打造智能助手APP(适配DeepSeek)
|
12月前
|
缓存 NoSQL Java
Redis应用—8.相关的缓存框架
本文介绍了Ehcache和Guava Cache两个缓存框架及其使用方法,以及如何自定义缓存。主要内容包括:Ehcache缓存框架、Guava Cache缓存框架、自定义缓存。总结:Ehcache适合用作本地缓存或与Redis结合使用,Guava Cache则提供了更灵活的缓存管理和更高的并发性能。自定义缓存可以根据具体需求选择不同的数据结构和引用类型来实现特定的缓存策略。
788 16
Redis应用—8.相关的缓存框架
|
SQL 关系型数据库 MySQL
宝塔面板之MySQL无法远程连接
宝塔面板默认安装的MySQL,root用户无远程权限。本文详细介绍如何使root支持远程连接:确保3306端口已放行,通过SSH登录服务器并进入MySQL,修改root用户的host为'%',最后刷新权限。具体步骤包括使用SQL命令修改用户主机设置,并确保网络配置正确,从而实现root的远程访问。
3035 35
|
网络协议 网络架构 Windows
解析NDP报文格式
【7月更文挑战第8天】邻居发现协议(Neighbor Discovery Protocol,NDP)是IPv6协议体系中最重要的基础协议之一,很多IPv6功能都依赖NDP来实现。
|
关系型数据库 API 数据库
rds备份与恢复
rds备份与恢复
844 4
|
算法 数据库 Docker
大模型必备向量数据库-Milvus的安装过程
大模型必备向量数据库-Milvus的安装过程
2889 0
技术指标和振荡器大全(三)(4)
技术指标和振荡器大全(三)(4)
218 0
|
设计模式 开发框架 算法
【QML 创建界面】QML界面的动态创建及其其他方法 (Dynamic Creation of QML Interfaces and Other Methods)
【QML 创建界面】QML界面的动态创建及其其他方法 (Dynamic Creation of QML Interfaces and Other Methods)
1793 0