如何在Azure中创建带特定重定向规则的代理以固定公网IP?
实现Azure代理固定IP访问第三方网站的方案
针对你的需求,这里提供两种可行的Azure原生方案,都能满足固定公网IP、域名转发的要求,同时支持WebSocket:
方案一:Azure Application Gateway(推荐,适合高流量场景)
核心配置步骤
- 部署带静态IP的网关:选择标准v2/WAF v2 SKU创建Application Gateway,前端IP配置为静态公共IP,这个IP就是所有请求的固定出口IP。
- 配置后端与路由:
- 添加后端池,目标地址设为
externalsite.com; - 创建前端监听,绑定自定义域名
mynewproxy-externalsite.com(需提前将域名解析到网关的静态IP); - 创建路由规则,关联上述监听和后端池,HTTP设置中开启后端主机名覆盖,将请求主机头替换为
externalsite.com(避免后端拒绝陌生主机头的请求)。
- 添加后端池,目标地址设为
- 域名转发规则:在路由规则中添加URL重写规则,匹配条件设为
{HTTP_HOST} equals mynewproxy-externalsite.com,动作设置为将请求URL重写为https://externalsite.com{REQUEST_URI}(保留原路径和参数)。 - 跨环境适配:
- Azure App Service:开启VNet集成,将App Service的出站流量导向网关所在VNet,或者直接在应用中把请求目标改为
mynewproxy-externalsite.com; - 开发环境:在本地hosts文件中添加
[网关静态IP] mynewproxy-externalsite.com,确保本地请求通过网关发出。
- Azure App Service:开启VNet集成,将App Service的出站流量导向网关所在VNet,或者直接在应用中把请求目标改为
- WebSocket支持:标准v2 SKU默认支持,只需在HTTP设置中勾选启用WebSocket选项即可。
方案二:Azure API Management(适合API级管控场景)
核心配置步骤
- 创建APIM实例:选择高级/消耗层(高级层自带固定出站IP,消耗层可配置静态IP),获取实例的静态出站IP地址。
- 配置代理API:
- 创建新API,后端服务地址设为
https://externalsite.com; - 为API绑定自定义域名
mynewproxy-externalsite.com; - 配置API策略,默认会自动保留请求路径转发到后端,无需额外规则。
- 创建新API,后端服务地址设为
- 跨环境适配:
- App Service和开发环境直接请求
mynewproxy-externalsite.com即可,所有流量都会通过APIM的静态IP出站。
- App Service和开发环境直接请求
- WebSocket支持:APIM默认支持WebSocket,只需确保后端
externalsite.com开启WebSocket服务,APIM会自动处理Upgrade头的转发。
两种方案都能实现你的核心需求,Application Gateway更适合高流量、需要WAF防护的场景,APIM则更适合需要API限流、日志管控的场景。
内容的提问来源于stack exchange,提问作者Calum Peebles
相关产品推荐
相关产品推荐

