nginx 配置代理,根据 不同的请求头进行转发至不同的代理

解决场景:下载发票的版式文件,第三方返回的是url链接地址,但是服务是部署在内网环境,无法访问互联网进行下载。此时需要进行走反向代理出去,如果按照已有套路,就是根据不同的访问前缀,跳转不同的location,我们有四十几个路径,就需要配置40多个location ,比较繁琐。此时可以使用nginx里的map 属性,进行配置,配置如下:

nginx配置文件


#user  nobody;
worker_processes  6;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections 65535 ;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  120s;#gzip  on;# 增大 map_hash_bucket_size 的值,可以根据实际情况调整大小map_hash_bucket_size 200;  # 定义映射关系map $http_x_target_server $target_server {default         "";"pubapi.jcsk100.com"                 "https://pubapi.jcsk100.com";"rocgw.jcsk100.com"                  "https://rocgw.jcsk100.com/external/";"taxsapivip.jcsk100.com"             "https://taxsapivip.jcsk100.com/v1/api/s";"taxsapi.holytax.com"                "https://taxsapi.holytax.com/v1/api/s";"dppt.shanghai.chinatax.gov.cn"      "https://dppt.shanghai.chinatax.gov.cn:8443";"dppt.guangdong.chinatax.gov.cn"     "https://dppt.guangdong.chinatax.gov.cn:8443";"dppt.xiamen.chinatax.gov.cn"        "https://dppt.xiamen.chinatax.gov.cn:8443";"dppt.tianjin.chinatax.gov.cn"       "https://dppt.tianjin.chinatax.gov.cn:8443";"dppt.chongqing.chinatax.gov.cn"     "https://dppt.chongqing.chinatax.gov.cn:8443";"dppt.neimenggu.chinatax.gov.cn"     "https://dppt.neimenggu.chinatax.gov.cn:8443";"dppt.dalian.chinatax.gov.cn"        "https://dppt.dalian.chinatax.gov.cn:8443";"dppt.qingdao.chinatax.gov.cn"       "https://dppt.qingdao.chinatax.gov.cn:8443";"dppt.shaanxi.chinatax.gov.cn"       "https://dppt.shaanxi.chinatax.gov.cn:8443";"dppt.sichuan.chinatax.gov.cn"       "https://dppt.sichuan.chinatax.gov.cn:8443";"dppt.henan.chinatax.gov.cn"         "https://dppt.henan.chinatax.gov.cn:8443";"dppt.fujian.chinatax.gov.cn"        "https://dppt.fujian.chinatax.gov.cn:8443";"dppt.jilin.chinatax.gov.cn"         "https://dppt.jilin.chinatax.gov.cn:8443";"dppt.yunnan.chinatax.gov.cn"        "https://dppt.yunnan.chinatax.gov.cn:8443";"dppt.ningbo.chinatax.gov.cn"        "https://dppt.ningbo.chinatax.gov.cn:8443";"dppt.shenzhen.chinatax.gov.cn"      "https://dppt.shenzhen.chinatax.gov.cn:8443";"dppt.gansu.chinatax.gov.cn"         "https://dppt.gansu.chinatax.gov.cn:8443";"dppt.shanxi.chinatax.gov.cn"        "https://dppt.shanxi.chinatax.gov.cn:8443";"dppt.zhejiang.chinatax.gov.cn"      "https://dppt.zhejiang.chinatax.gov.cn:8443";"dppt.hainan.chinatax.gov.cn"        "https://dppt.hainan.chinatax.gov.cn:8443";"dppt.liaoning.chinatax.gov.cn"      "https://dppt.liaoning.chinatax.gov.cn:8443";"dppt.jiangsu.chinatax.gov.cn"       "https://dppt.jiangsu.chinatax.gov.cn:8443";"dppt.jiangxi.chinatax.gov.cn"       "https://dppt.jiangxi.chinatax.gov.cn:8443";"dppt.guangxi.chinatax.gov.cn"       "https://dppt.guangxi.chinatax.gov.cn:8443";"dppt.hebei.chinatax.gov.cn"         "https://dppt.hebei.chinatax.gov.cn:8443";"dppt.heilongjiang.chinatax.gov.cn"  "https://dppt.heilongjiang.chinatax.gov.cn:8443";"dppt.xinjiang.chinatax.gov.cn"      "https://dppt.xinjiang.chinatax.gov.cn:8443";"dppt.hubei.chinatax.gov.cn"         "https://dppt.hubei.chinatax.gov.cn:8443";"dppt.beijing.chinatax.gov.cn"       "https://dppt.beijing.chinatax.gov.cn:8443";"dppt.anhui.chinatax.gov.cn"         "https://dppt.anhui.chinatax.gov.cn:8443";"dppt.shandong.chinatax.gov.cn"      "https://dppt.shandong.chinatax.gov.cn:8443";"dppt.hunan.chinatax.gov.cn"         "https://dppt.hunan.chinatax.gov.cn:8443";"dppt.guizhou.chinatax.gov.cn"       "https://dppt.guizhou.chinatax.gov.cn:8443";"dppt.xizang.chinatax.gov.cn"        "https://dppt.xizang.chinatax.gov.cn:8443";"dppt.ningxia.chinatax.gov.cn"       "https://dppt.ningxia.chinatax.gov.cn:8443";"dppt.qinghai.chinatax.gov.cn"       "https://dppt.qinghai.chinatax.gov.cn:8443";}#代理地址server {listen  8444;location  / {# 响应头打印 $http_x_target_server 和 $target_server 的值add_header X-Target-Server $http_x_target_server;add_header Target-Server $target_server;# 默认不传给北京的地址if ($target_server = "") {set $target_server "https://dppt.beijing.chinatax.gov.cn:8443";}proxy_pass $target_server;proxy_cache off;proxy_redirect off;proxy_connect_timeout 5m;proxy_send_timeout 5m;proxy_read_timeout 5m;proxy_buffer_size 10m;proxy_buffers 256 10m;proxy_busy_buffers_size 10m;proxy_temp_file_write_size 10m;add_header Cache-Control no-cache;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}# 添加 resolver 指令,使用 Google 的公共 DNS 服务器,根据项目上的情况进行配置,使用$target_server必须配置,写死地址则不需要resolver 8.8.8.8;
}

Java代码:

            // header 传入nginx里的key即可 就会指定到对应的目标server里URL url = new URL(urlString);URLConnection connection = url.openConnection();connection.setRequestProperty("X-Target-Server", header);

验证方式:
在这里插入图片描述
可以在响应头中,查看具体访问的代理地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4395.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity补充 -- 协程相关

1.协程。 协程并不是线程。线程是主线程之外的另一条 代码按照逻辑执行通道。协程则是在代码在按照逻辑执行的同时,是否需要执行额外的语句块。 2.协程的作用。 在update执行的时候,是按照帧来进行刷新的,也是按照帧执行代码的。但是又不想…

计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【Golang/nacos】nacos配置的增删查改,以及服务注册的golang实例及分析

前言 本文分析的实例来源于nacos在github上的开源仓库 nacos配置的增删查改 先具体来看一段代码,我将逐步分析每一段的作用 package mainimport ("fmt""time""github.com/nacos-group/nacos-sdk-go/clients""github.com/naco…

AIGC视频生成明星——Emu Video模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Meta的视频生成模型Emu Video,作为Meta发布的第二款视频生成模型,在视频生成领域发挥关键作用。 🌺优质专栏回顾&am…

5、docker-compose和docker-harbor

安装部署docker-compose 自动编排工具,可以根据dockerfile自动化的部署docker容器。是yaml文件格式,注意缩进。 1、安装docker-compose 2、配置compose配置文件docker-compose.yml 3、运行docker-compose.yml -f:指定文件,up&…

Vue3 nginx 打包后遇到的问题

前端vite文件配置 export default defineConfig({plugins: [vue(),DefineOptions()],base:./,resolve:{alias:{:/src, //配置指向src目录components:/src/components,views:/src/views}},server:{// host:0.0.0.0,// port:7000,proxy:{/api:{target:xxx, // 目标服务器地址 &am…

云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破

在信息技术应用创新的浪潮中,仓颉社区吸引了众多企业和开发者的积极参与,已有多个应用成功落地,展现出蓬勃的创新活力。仓颉编程语言精心遴选了在社区建设、应用创新、开源共建、技术布道等方面做出突出贡献的优秀项目应用,并颁发…

强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法,工艺参数优化、工程设计优化!(Matlab完整源码和数据) Transformer-LSTM模型的架构:输入层:多个变量作…

Oracle 可观测最佳实践

简介 Oracle 数据库是一种广泛使用的商业关系数据库管理系统(RDBMS),由甲骨文公司(Oracle Corporation)开发。它支持 SQL 语言,能够存储和管理大量数据,并提供高级数据管理功能,如数…

使用docker部署mysql和tomcat服务器发现的问题整理

1、本地访问tomcat时访问不到 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

【JavaEE】Spring(1)

一、什么是Spring和SpringBoot Spring是Java应用程序的开发框架,其目的就是为了简化Java开发;SpringBoot是在spring框架的基础上构建的一个快速开发框架,其作用是进一步简化Spring程序开发 二、SpringBoot项目 2.1 创建项目 1. 设置jdk版本…

数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)

数据库管理285期 20245-01-17 数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)1 HNSW事务支持解读 2 IVF分区支持解读 3 混合向量索引何时选择混合向量索引为何选择混合向量索引 总结 数据库管理-第285期 Oracle 23ai&#xff1a…

LabVIEW电源纹波补偿

在电子设备的电源管理中,电源纹波的存在可能会对设备的稳定性和性能产生负面影响。以某精密电子仪器的电源纹波补偿为例,详细阐述如何运用 LabVIEW 编写程序进行电源纹波补偿。将从电源纹波特点、测量采样、滤波、反馈控制等多个方面展开介绍。 ​ 电源…

Mousetrap:打造高效键盘快捷键体验的JavaScript库

Mousetrap:打造高效键盘快捷键体验的JavaScript库 前言 在当今快节奏的数字世界中,用户对Web应用的交互效率提出了更高的要求。 键盘快捷键作为一种提升操作便捷性和速度的有效手段,被广泛应用于各种应用中。 然而,实现一套稳定…

网络安全 | 什么是正向代理和反向代理?

关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…

STM32 学习笔记【补充】(十)硬件I2C读写MPU6050

该系列为笔者在学习STM32过程(主线是江科大的视频)中的记录与发散思考。 初学难免有所纰漏、错误,还望大家不吝指正,感谢~ 一、I2C 外设简介 I2C(Inter-Integrated Circuit)是一种多主多从的串行通信协议…

自定义提示确认弹窗-vue

最初可运行代码 弹窗组件代码&#xff1a; &#xff08;后来发现以下代码可运行&#xff0c;但打包 typescript 类型检查出错&#xff0c;可打包的代码在文末&#xff09; <template><div v-if"isVisible" class"dialog"><div class&quo…

TP4056锂电池充放电芯片教程文章详解·内置驱动电路资源!!!

目录 TP4056工作原理 TP4056引脚详解 TP4056驱动电路图 锂电池充放电板子绘制 编写不易&#xff0c;仅供学习&#xff0c;感谢理解。 TP4056工作原理 TP4056是专门为单节锂电池或锂聚合物电池设计的线性充电器&#xff0c;充电电流可以用外部电阻设定&#xff0c;最大充电…

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…

深度学习中的张量 - 使用PyTorch进行广播和元素级操作

深度学习中的张量 - 使用PyTorch进行广播和元素级操作 元素级是什么意思&#xff1f; 元素级操作在神经网络编程中与张量的使用非常常见。让我们从一个元素级操作的定义开始这次讨论。 一个_元素级_操作是在两个张量之间进行的操作&#xff0c;它作用于各自张量中的相应元素…