我无法使用Service Fabric和OWIN在不同的子域上托管多个网站。
假设我的Service Fabric云上有四台HTTP(S)服务器。它们中的每一个都在不同的端口上运行。因此,在初始化的某个时刻,他们将分别调用:
Microsoft.Owin.Hosting.WebApp.Start("http://+:80/", UnsecureStartup);
Microsoft.Owin.Hosting.WebApp.Start("https://+:443/", MainStartup);
Microsoft.Owin.Hosting.WebApp.Start("https://+:4431/", ApiStartup);
Microsoft.Owin.Hosting.WebApp.Start("https://+:4432/", ExtrasStartup);
一切正常。所有请求均已成功完成。所有四个端口都为其各自的无状态服务中分配的初创公司提供服务,而HTTPS则使用与ServiceManifest.xml
以适当的Service Fabric方式设置的相同证书。 Here's a similar single-server setup
我们一直计划使用子域而不是不同的端口。现在我们有了域名,我们正在尝试执行以下操作:
Microsoft.Owin.Hosting.WebApp.Start("http://example.com:80/", UnsecureStartup);
Microsoft.Owin.Hosting.WebApp.Start("https://example.com:443/", MainStartup);
Microsoft.Owin.Hosting.WebApp.Start("https://api.example.com:443/", ApiStartup);
Microsoft.Owin.Hosting.WebApp.Start("https://extras.example.com:443/", ExtrasStartup);
上面的代码确实运行了。所有四个无状态服务在Service Fabric Explorer中启动并变为绿色。然而,每个请求(http:80
和https:445
)都得到了相同的响应:
服务不可用
HTTP错误503.该服务不可用。
为什么Service Fabric允许我们拥有多个Owin服务器,即使在同一个端口上,如果我不能根据主机名选择一个呢?有没有人知道我们如何才能做到这一点?
非常感谢任何帮助。
答案 0 :(得分:1)
根据我的理解,主机名与SF无法很好地协作。 我看到你有以下选项:
1)您在内部服务上使用不同的端口,并在SF群集前面放置一个WAF,然后让它们处理SSL卸载,URL路由和NAT到您的内部端口。这样,您只需要1个公共IP。
2)您添加更多公共IP并让您的公共负载平衡处理它。你需要3个IP地址,但由于前5个IP是免费的,所以这不会花费你额外的费用。
您可能希望选择1,因为它可以让您更轻松地管理证书,提高安全性和灵活性,但需要花费$。