专有云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 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
人工智能 监控 供应链
AI技术创业有哪些机会?
本文探讨了AI技术创业的多个机会,包括提供行业解决方案、开发智能产品和服务以及教育和培训,为创业者在医疗保健、金融服务、零售、教育等多个领域提供了丰富的机遇。
1013 2
|
监控 API C++
一个更好的文件监控类,基于 DotNet 官方提供的 FileSystemWatcher
一个更好的文件监控类,基于 DotNet 官方提供的 FileSystemWatcher
|
Kubernetes API 调度
【k8s系列5】KubernetesClientException: too old resource version 原因分析
【k8s系列5】KubernetesClientException: too old resource version 原因分析
2094 0
|
图形学 异构计算
Siemens NX何时支持GPU光线追踪与图形加速?
NX的Ray Tracing Studio在NX 1847及更早版本中不支持NVIDIA RTX板的GPU加速,仅依赖CPU,性能较慢。从NX 1872起支持GPU加速。自2023年6月版起,若无GPU,NX将显示图形配置错误并记录到syslog文件,建议使用支持的GPU以避免未定义行为。更多支持的硬件和图形信息,请参阅鼎森电脑整理的文件“NX-Graphics-Certification-Table_20241207.xlsx”。链接:https://pan.baidu.com/s/1_FpOoJU_IrExnhVXyzB4cw?pwd=676s 提取码: 676s
802 1
|
存储 算法 Linux
C语言 多进程编程(一)进程创建
本文详细介绍了Linux系统中的进程管理。首先,文章解释了进程的概念及其特点,强调了进程作为操作系统中独立可调度实体的重要性。文章还深入讲解了Linux下的进程管理,包括如何获取进程ID、进程地址空间、虚拟地址与物理地址的区别,以及进程状态管理和优先级设置等内容。此外,还介绍了常用进程管理命令如`ps`、`top`、`pstree`和`kill`的使用方法。最后,文章讨论了进程的创建、退出和等待机制,并展示了如何通过`fork()`、`exec`家族函数以及`wait()`和`waitpid()`函数来管理和控制进程。此外,还介绍了守护进程的创建方法。
C语言 多进程编程(一)进程创建
|
资源调度 前端开发 JavaScript
React 安装(NPM)
10月更文挑战第6天
393 1
|
C++
Leetcode第56题(合并区间)
这篇文章介绍了LeetCode第56题“合并区间”的解题方法,通过排序和贪心策略合并重叠区间,并提供了C++的代码实现。
411 0
Leetcode第56题(合并区间)
|
数据采集 Java Python
爬取小说资源的Python实践:从单线程到多线程的效率飞跃
本文介绍了一种使用Python从笔趣阁网站爬取小说内容的方法,并通过引入多线程技术大幅提高了下载效率。文章首先概述了环境准备,包括所需安装的库,然后详细描述了爬虫程序的设计与实现过程,包括发送HTTP请求、解析HTML文档、提取章节链接及多线程下载等步骤。最后,强调了性能优化的重要性,并提醒读者遵守相关法律法规。
619 0
|
机器学习/深度学习 存储 算法框架/工具
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11(2)
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11(2)
326 0
|
JavaScript 前端开发 数据安全/隐私保护
一篇让你使用vue-cli搭建SPA项目
一篇让你使用vue-cli搭建SPA项目
437 0