Azure 如何设置两个都使用https端口的微服务?
我有一个微服务是Asp.Net核心无状态服务。服务运行良好,我可以访问 我的ServiceManifest.xml是:Azure 如何设置两个都使用https端口的微服务?,azure,asp.net-core,https,microservices,kestrel,Azure,Asp.net Core,Https,Microservices,Kestrel,我有一个微服务是Asp.Net核心无状态服务。服务运行良好,我可以访问 我的ServiceManifest.xml是: <Resources> <Endpoints> <Endpoint Protocol="https" Name="EndpointHttps" Type="Input" Port="443" /> </Endpoints> </Resources> 但我得到一个异常,它无法绑定,因为它正在
<Resources>
<Endpoints>
<Endpoint Protocol="https" Name="EndpointHttps" Type="Input" Port="443" />
</Endpoints>
</Resources>
但我得到一个异常,它无法绑定,因为它正在重写并使用UseKestrel端点。然后我尝试了PreferHostingUrls(true),但出现了一个错误,您必须使用UsePathBase
然后我尝试:
.UsePathBase("myservice")
然后我得到一个错误,它没有有效的https证书。但它只使用一个微服务
1。有人知道要让两个微服务同时工作需要做什么吗?
2。另一方面(出于好奇),我一直想知道为什么要使用动态端口。如果服务正在选择端口,您如何知道要向客户提供什么url?
谢谢你的帮助。我会回答这个问题,以防其他人有同样的问题。不确定这是唯一的方法,但我解决它的方法是使用反向代理。您也可以使用更强大的应用程序网关,但出于我的需要,我只需要反向代理 我不得不重新创建我的服务结构(事后无法让它使用反向代理)。创建服务结构时选择反向代理 注意:如果需要https,请首先创建密钥库并添加两个证书。在证书页面上,选择“自定义”,并对群集和反向代理使用不同的证书。如果使用相同的Azure部署,则Azure部署失败 另外,请至少选择一台D1_s2大小的计算机,否则Azure将在部署时无限期挂起,并且不会告诉您任何信息。这之后我就没有头发了 调用反向代理时,指定结构和服务: https://.eastus2.cloudapp.azure.com:19081/MyFabric/MyService/Controller/route 从一个服务到另一个服务时,可以使用localhost:19081而不是url 在servicemanifest.xml中,将端点设置为:
<Resources>
<Endpoints>
<Endpoint Protocol="http" UriScheme="http" Name="EndpointHttp" Type="Input" />
</Endpoints>
</Resources>
代理知道发送到哪里。我设置了一个应用程序管理API,将请求转发给代理。注意,这是针对单个分区集群的。如果有多个分区,还需要在url中指定分区id
回答您的问题:
主机
标题。可以共享端口的反向代理具有以下功能
在唯一的IP和端口上将请求转发给Kestrel
以下是一些参考资料:
- (再次;))
希望这能有所帮助。必须有人使用kestrel设置两个微服务,对吗?!?如果没有,我可以使用什么?你能分享一下你是如何配置反向代理的吗?就像我也有两项服务一样。当客户端发送请求时,如反向代理如何路由到具有该控制器的正确服务?更新了我的响应…如果需要更多信息,请告诉我
.UsePathBase("myservice")
<Resources>
<Endpoints>
<Endpoint Protocol="http" UriScheme="http" Name="EndpointHttp" Type="Input" />
</Endpoints>
</Resources>