如何在IIS部署asp.net core UI与Golang API到主域名及子域名
IIS部署ASP.NET Core UI与Golang API的域名映射解决方案
一、修正站点基础绑定配置
- 主站点(ASP.NET Core UI):
- 绑定设置:主机名填
foo.bar,端口80(用HTTPS就选443并配置对应证书),IP地址选「全部未分配」。 - 不要用无主机名的站点,否则会优先匹配所有未指定主机名的请求,导致api子域名的请求被主站点拦截。
- 绑定设置:主机名填
- API站点(Golang反向代理):
- 绑定设置:主机名填
api.foo.bar,端口80(或443),IP地址选「全部未分配」。 - 站点物理路径随便选个空目录就行,因为只做反向代理,不需要本地文件。
- 绑定设置:主机名填
二、安装IIS必备模块
得先装这两个模块才能做反向代理:
- URL重写模块
- Application Request Routing (ARR)
装完后,打开IIS管理器的「服务器节点」→「Application Request Routing Cache」→ 右侧点「服务器代理设置」,勾选「启用代理」,保存配置。
三、配置API站点的反向代理规则
进入api.foo.bar站点的「URL重写」模块,添加空白规则:
- 匹配URL:
- 请求路径选「与模式匹配」,模式填
(.*),用正则表达式。 - 条件不用额外加(有特殊需求再调整,比如限制请求方法)。
- 请求路径选「与模式匹配」,模式填
- 操作设置:
- 操作类型选「重写」
- 重写URL填
http://localhost:8080/{R:1} - 勾选「追加查询字符串」和「停止处理后续规则」
- 保存规则。
四、关键验证点
- 确认Golang服务监听的是
0.0.0.0:8080,不是127.0.0.1:8080(虽然本地能访问,但要保证IIS代理能正常转发)。 - 检查服务器防火墙:允许80/443端口对外访问,同时放开本地环路(127.0.0.1)的8080端口通信。
- 看IIS日志:去api站点的日志目录查请求是否到达该站点,以及重写后的目标地址是否正确。
五、HTTPS配置(可选)
如果要开HTTPS:
- 给
foo.bar和api.foo.bar申请通配符证书或多域名证书,绑定到对应站点的443端口。 - 如果Golang服务也启用了HTTPS,就把反向代理的重写URL改成
https://localhost:8080/{R:1};要是Golang只跑HTTP,就在IIS侧做SSL终止就行。
内容的提问来源于stack exchange,提问作者Scrzii
相关产品推荐
相关产品推荐

