一旦我从我的免费订阅进行升级,我就准备好通过 Azure 使用我的自定义域在线部署我的项目。
那么一点上下文,我有 1 个 Web 应用程序服务和 4 个 API 服务,每个服务都托管在一个单独的应用程序服务中,例如:
www.sitename.azurewebsites.net
www.sitename-api1.azurewebsites.net
www.sitename-api2.azurewebsites.net
www.sitename-api3.azurewebsites.net
www.sitename-api4.azurewebsites.net
上面的网络应用程序与所有 4 个 api 通信,一些 api 可能会也可能不会与另一个通信。 (我会喜欢一个应用程序网关,所以希望我以后会改变这个架构)。
因此,当我准备好将我的域与服务相关联时,Web 容器对我来说似乎非常简单,因为它变成了 www.sitename.com
,但我对接口(interface)服务。我的想法是每个 api 服务都在它自己的子域中,例如:
www.api1.sitename.net
www.api2.sitename.net
www.api3.sitename.net
www.api4.sitename.net
我相信我可以通过某种方式将我的 SSL 和域注册到每个应用程序服务,但这给我留下了几个问题。
- 我是否将每个 api 托管在与网络使用相同域的子域中? 应用程序,或者是否有其他首选方式,比如我托管它们的地方 都在同一域中,每个 API 和 Web 具有不同的公开端口 监听 80/443,或者可能只是使用 api 应用程序的 IP 地址 服务并允许 www.sitename.com 作为 CORS 的来源?
- 我假设,因为我正在将我的 SSL 证书关联到网络 服务,我需要在 API 服务上执行以下操作吗?
- 如果我只有一个 VNET 会不会更好(并且仍然负担得起) 关联到应用程序服务和仅注册的域 网络应用程序?
如果我对如何在我的应用程序服务与我的自定义域和 SSL 之间建立通信有任何深入了解,我将不胜感激,因为我对堆栈的这一部分还很陌生,但对学习感到很兴奋!
最佳答案
据我所知,在 Azure 云上,有两种服务可以帮助管理部署在多个应用服务容器上的 API:API Management和 Application Gateway .
API Management Premium层有多个自定义域名的功能,请看官方文档Feature-based comparison of the Azure API Management tiers如下图。
可以引用
Create a new Azure API Management service instance
的快速入门教程以及其他相关文件以了解如何操作。“Azure 应用程序网关是一种网络流量负载均衡器,可让您管理网络应用程序的流量。”介绍中说What is Azure Application Gateway? .如下图其体系结构所示,“使用应用程序网关,您可以根据 HTTP 请求的其他属性(例如 URI 路径或主机 header )做出路由决策。例如,您可以根据传入的 URL 路由流量。所以如果/images 在传入 URL 中,您可以将流量路由到为图像配置的一组特定服务器(称为池)。如果/video 在 URL 中,该流量将路由到另一个针对视频优化的池。
我推荐使用 Azure Application Gateway,这是一个很好的选择来管理多个应用程序服务并公开 API 的统一 url。
关于Azure - 使用自定义域和 ssl 连接多个应用程序服务容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58192938/