使用Service Fabric

时间:2017-03-16 20:21:10

标签: c# azure owin azure-service-fabric self-hosting

我无法使用Service Fabric和OWIN在不同的子域上托管多个网站。

假设我的Service Fabric云上有四台HTTP(S)服务器。它们中的每一个都在不同的端口上运行。因此,在初始化的某个时刻,他们将分别调用:

  1. Microsoft.Owin.Hosting.WebApp.Start("http://+:80/", UnsecureStartup);
  2. Microsoft.Owin.Hosting.WebApp.Start("https://+:443/", MainStartup);
  3. Microsoft.Owin.Hosting.WebApp.Start("https://+:4431/", ApiStartup);
  4. Microsoft.Owin.Hosting.WebApp.Start("https://+:4432/", ExtrasStartup);
  5. 一切正常。所有请求均已成功完成。所有四个端口都为其各自的无状态服务中分配的初创公司提供服务,而HTTPS则使用与ServiceManifest.xml以适当的Service Fabric方式设置的相同证书。 Here's a similar single-server setup

    我们一直计划使用子域而不是不同的端口。现在我们有了域名,我们正在尝试执行以下操作:

    1. Microsoft.Owin.Hosting.WebApp.Start("http://example.com:80/", UnsecureStartup);
    2. Microsoft.Owin.Hosting.WebApp.Start("https://example.com:443/", MainStartup);
    3. Microsoft.Owin.Hosting.WebApp.Start("https://api.example.com:443/", ApiStartup);
    4. Microsoft.Owin.Hosting.WebApp.Start("https://extras.example.com:443/", ExtrasStartup);
    5. 上面的代码确实运行了。所有四个无状态服务在Service Fabric Explorer中启动并变为绿色。然而,每个请求(http:80https:445)都得到了相同的响应:

        

      服务不可用

           

      HTTP错误503.该服务不可用。

      为什么Service Fabric允许我们拥有多个Owin服务器,即使在同一个端口上,如果我不能根据主机名选择一个呢?有没有人知道我们如何才能做到这一点?

      非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

根据我的理解,主机名与SF无法很好地协作。 我看到你有以下选项:

1)您在内部服务上使用不同的端口,并在SF群集前面放置一个WAF,然后让它们处理SSL卸载,URL路由和NAT到您的内部端口。这样,您只需要1个公共IP。

2)您添加更多公共IP并让您的公共负载平衡处理它。你需要3个IP地址,但由于前5个IP是免费的,所以这不会花费你额外的费用。

您可能希望选择1,因为它可以让您更轻松地管理证书,提高安全性和灵活性,但需要花费$。