如何通过appsettings.json配置Kestrel绑定多个HTTP及HTTPS地址
结论
你的判断是错误的,Kestrel 原生支持通过 JSON 配置实现多域名、多地址监听,有两种常用的配置方式可以满足你的需求。
方式一:独立端点配置(推荐,灵活度最高)
EndPoints 节点下支持自定义多个子节点,每个子节点对应一个监听地址,节点名称可任意自定义,只要不重复即可,示例配置如下:
"Kestrel": { "EndPoints": { "Http_Foo": { "Url": "http://foo:12912" }, "Http_Bar": { "Url": "http://bar:12912" }, "Https_Foo": { "Url": "https://foo:443", "Certificate": { "Path": "foo.pfx", "Password": "your_cert_password" } }, "Https_Bar": { "Url": "https://bar:443", "Certificate": { "Path": "bar.pfx", "Password": "your_cert_password" } } } }
如果你的多个HTTPS域名共用同一份证书,也可以把证书配置提至Kestrel根节点,不用每个端点重复配置。如果需要在同一个HTTPS端口监听多个域名,确保服务端和客户端都支持SNI即可,.NET 5及以上版本默认支持SNI。
方式二:全局Urls批量配置
如果不需要为每个端点单独配置证书、限流等差异化规则,也可以直接在Kestrel根节点配置Urls属性,多个地址用分号分隔即可:
"Kestrel": { "Urls": "http://foo:12912;http://bar:12912;https://foo:443;https://bar:443", "Certificates": { "Default": { "Path": "common.pfx", "Password": "your_cert_password" } } }
这种方式所有HTTPS端点都会共用根节点配置的默认证书,适合证书统一的场景。
内容的提问来源于stack exchange,提问作者Nikhil Agrawal
相关产品推荐
相关产品推荐

