服务架构 URL 路由

service fabric URL routing

我正在使用 Azure 负载均衡器和 Azure 服务结构来托管多个自托管 Web 应用程序,我想创建一个允许我根据用户 URL 请求进行路由的规则。

例如,如果用户导航到:

http:// domain.com/Site1 那么规则将路由到: http:// domain.com**:8181**/Site1 集群内

如果用户导航到:

http:// domain.com/Site2 那么规则将路由到: http:// domain.com**:8282**/Site2 集群内

Azure 服务 fabric/load 平衡器可以做到这一点吗?

Azure 负载均衡器仅将它在一个端口上接收到的流量转发到另一个端口(可以是同一端口或不同的内部端口)上的集群中的节点。它在第 4 层(TCP、UDP)上运行,因此它对 HTTP 或 URLs 一无所知(尽管它确实允许 HTTP 探测)。

以下是多个网站的几个选项:

如果您希望您的网站在内部托管在不同的端口(8181 和 8282)上,那么您将需要一些其他的东西来做 URL 路由。 Azure 流量管理器或 Azure 应用程序网关是 运行 集群外部的可能选项。您的 Azure 负载均衡器需要为每个网站打开一个端口,但这样做的好处是您可以 运行 您的网站在专用节点上,并且 ALB 会根据端口自动将流量路由到适当的节点打开。

或者,您可以在集群中设置自己的无状态路由服务 运行。

或者您可以完全跳过路由,只在端口 80/443 上托管您的所有网站。只要您使用的是基于 http.sys 的网络主机,包括 Katana、ASP.NET Core 1 WebListener 或您在 HttpListener 上构建的任何东西,您就可以为所有网站使用相同的端口,并让根据 URL 路径或主机名的底层 http 服务器路由,两者均受支持。