Nginx proxy_pass反向代理动态端口

2023-11-14

背景

某项目需要播放第三方监控视频,我方访问域名假定为 my.area.com,第三方的域名假定为 video.other.com,域名不一致就导致浏览器跨域问题无法播放,且第三方拖拖拉拉不想解决,于是只有我方使用 nginx 做反向代理来解决跨域问题。

但是在代理的过程中发现,对方返回的播放端口有N多个且有变更的风险,所以使用 nginx 穷举端口式的代理不是第一选择,就想着 proxy_pass 能不能配置出动态端口进行代理呢,这样我方只需要一次配置就能解决问题。

解决

1、后台程序从第三方平台获取到对方的播放地址后,替换域名、处理端口为访问路径

例如:https://video.other.com:8080/play/id?token=123
处理为:https://my.area.com/8080/play/id?token=123

2、Nginx 代理配置

http {

  server {
    listen 80;
    server_name localhost;

    # 正则匹配请求路径:https://my.area.com/8080/play/id?token=123
    location ~ /(\d+)/play/(.*?)$ {
      # 域名间的代理且使用了参数,就需要配置 DNS 服务器来解析域名
      resolver 114.114.114.114;
      # 取正则匹配上的路径作为端口,实现动态端口的功能
      proxy_pass https://video.other.com:$1/play/$2?$args
    }
  }

}

如此配置变实现了业务动态端口的代理。

详细说明:

  • $1、$2 等代表什么?

$ 代表使用内置参数,在正则匹配中,代表正则组索引,在这里,$1 就代表了 8080,$2 就代表 id

  • location 的匹配为什么要 /(\d+)/play/(.*?)$ 这样配置,配置成 /(\d+)/play/ 不可以么?

proxy_pass 一旦使用了参数,那么就不会对请求地址拼接,而是替换参数操作了,如果配置为 /(\d+)/play/ 将会丢失后面的请求路径,最终代理后的访问路径为:https://video.other.com:8080/play/

  • proxy_pass 为什么要在末尾添加 ?$args 配置?

$args 是 nginx 的内置参数,代表了 GET 请求参数,因为不是地址拼接,所以参数也会丢失,需要手动添加。

另:代理了业务动态端口的功能后,建议使用后台程序来测试功能,用于输出完整访问地址和参数,才能知道配置如何调整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx proxy_pass反向代理动态端口 的相关文章

  • 命名 Docker 卷以共享构建而不更新

    我工作的公司的开发人员要求我用 Docker 做一些不同的事情 然后我也被使用了 目标是拥有 2 个具有以下职责的容器 容器A 节点容器将构建前端 React 应用程序并将捆绑包放入名为的目录中app dist 完成后 容器将停止运行 容器
  • 为什么在生产中得到空 CSS 文件?

    我在文件中放入了很多css文件active admin css scss Active Admin s got SASS import active admin mixins import active admin base import
  • 通过 nginx 入口控制器进行基本身份验证

    我正在使用 nginx 入口控制器 https kubernetes github io ingress nginx deploy https kubernetes github io ingress nginx deploy 在 AWS
  • Node + Express + Nginx 未设置 Cookie

    我有一个使用 Express 的 Node 应用程序 我尝试为我的客户端设置 cookie 它在本地环境 http 上运行良好 但是一旦我投入生产 https 我就很好地收到了cookie 我可以在响应中看到它 但它没有设置 任何想法 Ng
  • 当请求太大时,Nginx(我认为)会以错误的权限保存文件

    所以 我对托管和 Linux 等都是完全陌生的 所以如果我说错了 请原谅我 我还在学习 我正在使用 Django 创建一个小型个人网站 我想把它放到网上看看是否一切正常 我从 linode 买了一台便宜的服务器 并使用 Digital Oc
  • Docker:Nginx 和 php5-fpm docker 不说话

    我想进行完全 Docker 化的 Drupal 安装 我的第一步是让容器与 Nginx 和 php5 fpm 一起运行 两者都基于 Debian 我在 CoreOS alpha 频道 使用 Digital Ocean 我的 Dockerfi
  • Nginx反向代理返回404

    我的 Nginx 安装并运行 下面是配置 etc nginx nginx conf 我要全部转发 api 到我的 tomcat 服务器 该服务器在同一服务器上的端口 9100 上运行 类型http myhost 9100 api apps有
  • 如何正确链接 php-fpm 和 Nginx Docker 容器?

    我正在尝试链接 2 个单独的容器 nginx 最新 https registry hub docker com nginx php fpm https registry hub docker com php 问题是 php 脚本不起作用 也
  • 找不到 NGINX brew 安装命令

    I do brew install nginx and get gt Downloading http nginx org download nginx 1 2 2 tar gz Already downloaded Library Cac
  • 将代码从 htaccess 重写为 nginx 配置?

    我在将 htaccess 文件中的重写代码实现到 nginx 配置中时遇到问题 我已经尝试过生成器 http winnginx com htaccess http winginx com htaccess用于生成我的重写 代码 我的ngin
  • nginx 和 uwsgi 非常大的文件上传(>3Gb)

    也许有人知道该怎么做 我正在尝试上传大于 3Gb 的文件 没问题 如果我使用以下配置上传高达 2Gb 的文件 Nginx client max body size 5g client body in file only clean clie
  • 常规请求期间 Django AJAX 请求未通过

    我有一个带有登录网页的 Django 站点 当提交页面上的登录表单时 它会执行登录视图 该视图会在其中运行一个需要很长时间处理 30秒左右 的函数 因此 为了在登录期间向客户端显示进度 一旦提交表单 登录页面上的 JS 函数就会开始向服务器
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • 在 docker 中将 pgadmin 连接到 postgres

    我有一个docker compose与服务文件python nginx postgres and pgadmin services postgres image postgres 9 6 env file env volumes postg
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • 阻止 ingress-nginx 负载均衡器上的特定路径

    我有许多指向入口控制器 IP 的域 我想阻止所有域 站点的 特定路径 有没有办法做到这一点 我可以用nginx ingress kubernetes io configuration snippet 对于每个站点 但正在寻找同时处理所有站点

随机推荐

  • python-认识(第二段)

    1 条件表达式 关系运算符特点 可以连用 例 a b 10 50 对于 0
  • games103 物理模拟第三节笔记补充

    矩阵求逆直接法 1 LU分解 2 LDLT分解法 3 Cholesky分解 4 QR分解 5 SVD分解 6 Jordan分解 关于LU分解 LU分解的矩阵稀疏性与矩阵A的排列顺序有关 在这个领域 matlab提供了一套较好的解决方案 LU
  • docker学习1-基本概念

    Docker jar包 环境 镜像 镜像存在docker仓库中 随用随取 无需现配环境 docker通过隔离机制 各个镜像之间互不干扰 docker比vm轻量化 每次只需运行镜像即可 镜像占内存小启动快 虚拟机启动慢 占内存较大 docke
  • oracle一个事务的完整流程分析

    author skate time 2010 09 01 在oracle客户端与服务端建立连接的 并把请求提交给oracle服务端以前分析过 参考如下 http blog csdn net wyzxg archive 2010 08 16
  • 夜莺监控V6初探

    目标 客户用产品可能是功能设计好 也可能是因为响应快稳定可靠 例如滴滴用不了用高德 券商app故障受罚 微信凌晨服务崩溃 所以稳定性建设工作价值是保障客户体验 避免资损 社会负面舆论 故障生命周期处理 围绕故障生命周期 在整个故障定位体系
  • 文件上传漏洞靶场upload-labs学习(pass11-pass15)

    Upload Labs关卡 0x00 Pass11 str ireplace复写绕过 0x01 Pass12 GET方式 00截断 0x02 Pass13 POST方式 00截断 0x03 Pass14 文件头截取判断 0x04 Pass1
  • 游戏测试和软件测试有什么区别?

    针对手游而言 游戏测试的本质是APP 所以不少手游的测试方式与APP测试异曲同工 然而也有所不同 APP更多的是具有一种工具 一款APP好不好用不重要 关键点在于实用 而游戏则具有一种玩具属性 它并不见得实用 但他要符合玩家的好恶 要能让玩
  • 华为OD机试 - 寻找相似单词(Java)

    题目描述 给定一个可存储若干单词的字典 找出指定单词的所有相似单词 并且按照单词名称从小到大排序输出 单词仅包括字母 但可能大小写并存 大写不一定只出现在首字母 相似单词说明 给定一个单词X 如果通过任意交换单词中字母的位置得到不同的单词Y
  • python3 pickle.load 读python2 文件报错, UnicodeDecodeError 和 TypeError

    pickle持久化文件用 python2 7 pickle dump产生 程序升级后用python3 6 读文件报错 UnicodeDecodeError ascii codec can t decode byte 0xc3 in posi
  • 【SVN】svn服务器访问失败【由于连接方在一段时间后没有反应】

    可以很清楚的告诉你 是由于服务器的端口未打开或者你的服务根本没有运行 环境 1 服务器windows2012 2 本机电脑win7 3 svn本地的版本和服务器的版本一致 分为以下两种情况 1 在服务器上可以进行svn的操作 2 在服务器上
  • HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException

    做青橙电商项目的时候 发布项目后登录发现直接报空指针异常 仔细检查代码后发现是dubbo远程框架中service远程调用失败 问题是导包倒错了 报错如下 HTTP Status 500 Request processing failed n
  • 博客第一天>>>>梦开始了

    简单的自我介绍一下哈 新码农上任三把活 gt 自我介绍 大哥大佬牛逼的人们好 我来自广西一所三本大学 当一个想要月入过万的小小码农 梦先慢慢积累 语言目标 从c开始学起 第一个月要把c语言的大概 流程做一遍 先学到会看懂一些C语言代码 其间
  • 串联型PI和并联型PI调节器的比较

    一 PI调节器的种类 图3 4 仿真波形变化情况 串联型PI调节器 1500r min 从图3 1到3 4比较可知 与并联型PI调节器相比 串联型PI调节器的超调量很小 速度环 且动态过程时间短 稳态过程的纹波也相对较小 综合可知 代入串联
  • 【运维笔记】kafka跨域通信代理

    kafka跨域通信代理 场景描述 模拟思路 模拟环境说明 基础环境 kafka版本 环境部署 基础软件安装 编写kafka的docker compose yml文件 环境验证 解决方案 Kafka通信机制 解决思路 代理配置 验证是否满足要
  • 解决python中文乱码问题

    python输出中文乱码的问题相信大家都遇到过 那么应该如何解决呢 一 修改系统变量 依次打开 设置 gt 系统 gt 关于 gt 高级系统设置 gt 环境变量 gt 新建系统变量 新变量的变量名是 PYTHONIOENCODING 变量值
  • 《Win10——如何设置开机自启动项》

    Win10 如何设置开机自启动项 1 为需要自启动的程序创建快捷方式 2 Win R输入 shell startup 按下回车键出现一个文件夹 3 将快捷方式拖入文件夹中
  • Unity Mathf的一些函数

    1 Mathf Lerp float a float b float t 1 1 官方给出的解释为 用t在a和b之间做线性差值 参数t限制在0到1之间 当t 0时返回值为a 当t 1时返回值为b 当t为0 5时返回值为a到b的中间点 1 2
  • Computed 和 Watch 的区别

    1 computed计算属性 作用 1 解决模板中放入过多的逻辑会让模板过重且难以维护的问题 例如两个数据的拼接或字体颜色的判断 2 它支持缓存 只有依赖的数据发生了变化 才会重新计算 例如模板中多次用到数据拼接可以用计算属性 只执行一次计
  • 微信小程序播放音乐并同步一次显示一行歌词

    主要是对于歌词部分的描述 gitee项目仓库地址 https gitee com manster1231 master cloud music 点个star哦 1 总体思路 先在加载页面时异步获取歌词 根据 musicId 我们可以获取到该
  • Nginx proxy_pass反向代理动态端口

    背景 某项目需要播放第三方监控视频 我方访问域名假定为 my area com 第三方的域名假定为 video other com 域名不一致就导致浏览器跨域问题无法播放 且第三方拖拖拉拉不想解决 于是只有我方使用 nginx 做反向代理来