如何通过https路由所有流量?

时间:2017-10-26 17:23:01

标签: c# .net azure visual-studio-2017 azure-service-fabric

Service Fabric允许您指定要侦听的端点,并且每个服务都可以公开不同的协议,如下所示:

            protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
        {
            return new[]
            {
                new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp,
                    serviceContext, ServiceEventSource.Current, "ServiceEndpointHttps")),

                 //you can add another one here like so:
new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp,
                    serviceContext, ServiceEventSource.Current, "ServiceEndpointUnSecured"))
            };
        }

在ServiceManifest.xml文件中,我们可以指定这两个端点:

<Endpoints>
        <Endpoint Protocol="http" Name="ServiceEndpointUnsecured" Type="Input" />
  <Endpoint Protocol="https" Name="ServiceEndpointHttps" Type="Input" />
</Endpoints>

我们有100个微服务,我们希望只有1个,中心位置,我们配置服务是通过http还是https运行。

是否可以更改此设置,以便我们只有1个位置负责为所有服务路由http或https?

2 个答案:

答案 0 :(得分:1)

根据您是在讨论群集内服务之间的通信还是群集外部的通信,有几种不同的方法。

对于群集内的服务到服务通信,一切由客户端决定(例如,进行呼叫的其他服务)。正如Rogala所提到的,反向代理将是核心解决方案。您可以调用反向代理,它将使用Service Fabric命名服务路由到公开的端点。如果您只公开https,它将是https,您也可以将反向代理配置为始终使用https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy-configure-secure-communication

对于群集的入口,一个类似的概念,通过集群内部的网关服务,是常见的模式。然后,网关服务将使用反向代理,从而使用上述模式:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-connect-and-communicate-with-services#connections-from-external-clients

答案 1 :(得分:-1)

是的,您可以使用Apigee或Azure API管理等代理,并通过该中心位置拥有所有流量代理。这提供了围绕安全性和管理流量的主要优势。如果您有具体问题,请与我聊聊。

〜干杯