Azure搭建具备静态IP的简易反向代理方案咨询
最简零编码固定IP反向代理方案
针对Azure平台轻量化固定出站IP反向代理的需求,直接用Linux版App Service + 官方Nginx镜像即可实现,全程10分钟左右完成部署,不需要写任何业务代码,也不需要依赖冗余的重量级服务。
方案优势
对比前期调研的5种实现路径,这个方案完全匹配轻量化需求:
- 不存在版本兼容问题:Nginx反向代理是工业界标准成熟方案,不存在旧教程随版本迭代失效的问题
- 无冗余功能:不需要为代理功能额外支付APIM、Application Gateway这类重量级服务的成本,没有用不上的多余能力
- 配置链路短:不需要额外配置复杂的VNet规则、Function版本适配逻辑
- 零编码:不需要自行开发代理转发逻辑,所有透传能力由Nginx原生提供,稳定性远高于自行开发的简易代理
具体部署步骤
- 创建基础层Linux App Service Plan
选择B1及以上规格即可(F1/D1免费/共享层无固定出站IP,不要选),地域选择靠近业务侧的节点,B1实例每月运行成本约10美元,是目前Azure公网服务里带固定IP的最低成本选项。
- 创建基础层Linux App Service Plan
- 部署Nginx服务
新建对应App Service实例,发布类型选择「容器」,镜像源选择Docker Hub公共镜像,直接填入nginx:alpine(裁剪版Nginx,启动快资源占用低),同时在应用配置里添加参数WEBSITES_PORT = 80,指定容器监听端口。
- 部署Nginx服务
- 配置反向代理规则
进入App Service的高级工具(Kudu),通过SSH连接到运行中的容器,编辑/etc/nginx/conf.d/default.conf配置文件,替换为以下内容:
保存配置后执行server { listen 80; server_name my-reverse-proxy.com; # 替换为你的代理服务域名 location / { # 注意域名末尾必须加斜杠,才能保证路径完整透传 proxy_pass https://my-whitelisted-api.com/; # 替换为目标API的域名 proxy_set_header Host my-whitelisted-api.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; # 自动透传所有请求头、响应头、请求体,适配GET/POST/PUT等所有请求方法 proxy_pass_request_headers on; } }nginx -s reload重载规则即可生效。如果需要避免实例重启后配置丢失,可以把上述配置打包到自定义镜像,或者挂载Azure文件存储到容器映射配置路径,一劳永逸。- 配置反向代理规则
- 配置IP白名单
进入App Service的「属性」页面,复制页面列出的所有出站IP地址,全部添加到目标API的IP白名单规则中即可。
- 配置IP白名单
- 绑定域名开启HTTPS
给App Service绑定自定义域名my-reverse-proxy.com,直接启用Azure免费托管SSL证书,部署完成后所有发往https://my-reverse-proxy.com/*的请求,都会自动透传到目标API对应路径,返回的响应和直接请求目标API完全一致。
- 绑定域名开启HTTPS
补充说明:如果你需要单一固定出站IP而非App Service默认提供的4个一组的出站IP池,只需要给该App Service一键关联基础版NAT网关即可,不需要手动配置复杂的VNet路由规则,配置链路比给Azure Function绑定NAT网关简单60%以上。如果请求量极低,也可以替换为Azure Container Apps消费层部署Nginx镜像,绑定固定出口IP后按实际请求量计费,无请求时不产生计算费用。
内容的提问来源于stack exchange,提问作者mnj
相关产品推荐
相关产品推荐

