基于自定义域名通过反向代理及SSL访问Service Fabric的方案咨询
当然可以实现!结合你现有的Service Fabric(SF)配置,我会给你拆解具体的实现步骤和注意事项:
实现思路与步骤
你的核心需求是通过http://mycustomdomain.com(默认80端口)访问已配置好的SF反向代理后端服务,当前反向代理的访问入口是https://mycluster.westeurope.cloudapp.azure.com:19081。结合你已生效的CNAME配置,我们需要调整反向代理的域名绑定,并处理端口转发/重定向逻辑。
1. 确认前置条件(你已完成的部分)
- CNAME记录已生效:
mycustomdomain.com成功指向mycluster.westeurope.cloudapp.azure.com - SF内核模式SSL和反向代理功能正常运行
- 集群节点的网络规则允许对应端口的流量
2. 调整SF反向代理的域名绑定
默认情况下,SF反向代理只会响应集群默认域名的请求,我们需要添加自定义域名的支持:
- 登录Azure门户,找到你的SF集群资源,进入配置 -> fabricSettings
- 找到
ReverseProxy配置节(如果没有则新增),添加Hosts参数,值为mycustomdomain.com(多个域名用逗号分隔) - 保存配置,等待集群完成更新(这个过程通常需要几分钟)
3. 配置端口转发与HTTP请求处理
因为你要使用HTTP默认的80端口,而反向代理当前监听的是19081端口(HTTPS),这里有两种方案可选:
方案A:HTTP请求重定向到HTTPS端点(推荐生产环境使用)
这种方式避免明文传输,更安全,步骤如下:
- 在SF集群的每个节点上安装IIS(如果尚未安装)
- 在IIS中创建一个空网站,绑定到80端口和
mycustomdomain.com域名 - 配置IIS URL重写规则,将所有HTTP请求重定向到
https://mycustomdomain.com:19081{REQUEST_URI}- 重写规则示例(XML格式):
<rewrite> <rules> <rule name="HTTP to HTTPS Redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" /> <add input="{HTTP_HOST}" pattern="mycustomdomain.com" /> </conditions> <action type="Redirect" url="https://mycustomdomain.com:19081/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite>
- 重写规则示例(XML格式):
- 在Azure负载均衡器中添加入站规则:允许80端口的流量,转发到集群节点的80端口
方案B:让反向代理直接监听80端口处理HTTP请求
如果仅在测试环境使用,不需要强制HTTPS,可以修改反向代理配置:
- 在SF集群的
fabricSettings->ReverseProxy节中,添加HttpPort参数,值为80 - 确保Azure负载均衡器开放80端口,转发到集群节点的80端口
- 注意:这种方式会以明文传输请求,存在安全风险,不建议生产环境使用
4. 验证配置
- 先确认CNAME解析正常:执行
nslookup mycustomdomain.com,确认返回集群的Azure域名IP - 访问
http://mycustomdomain.com,检查是否能正确访问到目标服务(方案A会跳转到HTTPS地址,方案B直接返回HTTP响应)
内容的提问来源于stack exchange,提问作者Xav Sc
相关产品推荐
相关产品推荐

