Windows 11 ARM不支持IIS时运行多子域名ASP.NET Core站点方案问询
Windows 11 ARM 本地多子域名ASP.NET Core 3.1站点部署方案
以下是经过验证的可行解决途径,完全适配M系列芯片Mac运行的Win11 ARM环境:
方案1:Nginx for ARM 反向代理(最贴近原有IIS使用习惯)
该方案通过反向代理实现多子域名同端口分发,无需修改现有站点代码:
- 首先下载适配Windows ARM架构的Nginx安装包,完成基础安装
- 将各个ASP.NET Core站点分别启动在不同本地端口,例如:
- auth-dev站点:
127.0.0.1:5001 - web-dev站点:
127.0.0.1:5002 - webapi-dev站点:
127.0.0.1:5003
- auth-dev站点:
- 修改系统hosts文件(路径
C:\Windows\System32\drivers\etc\hosts),添加如下映射:
hosts仅负责域名到IP的解析,无需处理端口,端口分发逻辑由Nginx实现127.0.0.1 auth-dev.mydomain.com 127.0.0.1 web-dev.mydomain.com 127.0.0.1 webapi-dev.mydomain.com - 配置Nginx反向代理规则,在
nginx.conf的http块中为每个子域名添加独立server配置,统一监听80/443端口,绑定对应子域名作为server_name,配置SSL证书后将请求转发到对应站点的本地端口即可 - 可将Nginx注册为Windows系统服务,实现开机自启,使用体验和原有IIS一致
方案2:Kestrel 原生多域名绑定(性能最优)
ASP.NET Core自带的Kestrel服务器原生支持ARM架构,且支持基于主机名的同端口多站点绑定,无需额外安装第三方软件:
- 为每个独立站点修改
appsettings.json配置文件,添加Kestrel端点配置,示例如下:"Kestrel": { "Endpoints": { "Https": { "Url": "https://auth-dev.mydomain.com:443", "Certificate": { "Path": "你的开发证书路径.pfx", "Password": "证书密码" } } } } - 每个站点配置对应自己的子域名,启动后Kestrel会自动根据请求的主机名将流量分发到对应站点,支持所有站点同时监听443/80端口,完全满足你的需求
方案3:WSL2 部署
如果熟悉Linux操作,可启用Win11 ARM自带的WSL2功能,安装ARM版Linux发行版:
- 在Linux环境中安装.NET 3.1运行时、Nginx/Apache服务,将站点部署在WSL2内
- 将Windows层hosts的子域名映射指向WSL2的虚拟机IP即可正常访问,Linux环境下的服务配置选择更灵活,也完全兼容ASP.NET Core运行
补充说明
你之前调研到的Apache不支持ASP.NET Core的说法不准确,Apache可以作为反向代理转发到后端Kestrel运行的ASP.NET Core站点,和Nginx的实现逻辑一致,只是Nginx配置更简洁,更推荐优先选择前两种方案。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

