当前位置: 首页 > news >正文

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.lryc.cn/news/522068.html

相关文章:

  • 类模板的使用方法
  • 高级Python Web开发:FastAPI的前后端集成与API性能优化
  • 期权懂|期权的溢价率和杠杆率有什么区别?
  • 分布式ID的实现方案
  • Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)
  • 如何学习网络安全?有哪些小窍门?
  • Dart语言的数据结构
  • TabPFN - 表格数据基础模型
  • AOF日志:宕机了Redis如何避免数据丢失?
  • MAC上安装Octave
  • C 语言中二维数组的退化
  • Notion 推出捏脸应用 | Deving Weekly #15
  • C# Linq 查询
  • ES7【2016】、ES8【2017】新增特性
  • 64细分步进电机驱动器TMC2209
  • C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等
  • linux 安装PrometheusAlert配置钉钉告警
  • 【华为路由/交换机的ssh远程设置】
  • 性能测试 - Locust WebSocket client
  • html中鼠标位置信息
  • kubernetes v1.29.XX版本HPA、KPA、VPA并压力测试
  • flutter 常用UI组件
  • HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (五、电影详情页的设计实现)
  • hive表修改字段类型没有级连导致历史分区报错
  • 云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破
  • JS宏进阶:JS宏中的文件系统FileSystem
  • XML序列化和反序列化的学习
  • npm ERR! code CERT_HAS_EXPIRED
  • 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <5> 5分钟集成好caffeine并使用注解操作缓存
  • 【设计模式-结构型】装饰器模式