如何使用IIS作为多租户应用的网关,根据子域转发到不同的服务器
How to use IIS as gateway for multi-tenant application, forwarding to different servers based on subdomain
今天我有一个 ASP.NET 应用程序,其中每个租户(即客户)都有自己的 URL,例如'A Company' 会有 https://acompany.awesomeservice.com。我正在使用 DNS 将所有租户定向到生产 Web 服务器。
我想要多个生产 Web 服务器并将每个子域分配给一个服务器。例如所以租户 A、B、C 使用服务器 1,租户 D、E、F 使用服务器 2。但我不想为此使用 DNS,因为我希望能够合理地将租户移动到不同的 Web 服务器快速,用于绿蓝部署等。例如,在进行升级时,我可能会:
- 将所有租户移动到服务器 1
- 升级服务器 2
- 先把一些想要新版本的租户搬回去
- 几天后当一切看起来稳定时搬走剩余的租户
似乎使用 IIS URL 重写模块是一种合适的方法。我有一个单独的 IIS 服务器或网站用于 'gateway' 并且每个租户有一个单独的规则,将 URL 重写到他们已分配的任何服务器。
但这是正确的做法吗?其他人是怎么做到的?
我会创建一个工具来将租户分配到不同的服务器,它会使用一些 IIS api 来更新 URL 重写规则(API?)。
正如@Lex-Li在评论中所说,是的,你可以做一个reverse proxy with ARR & URL Rewrite module,这就是我所做的。
其他几个方便的链接:
要通过 API 更新规则,请使用 IIS Administration API 或直接更新配置文件(糟糕!?)。根据需要,还有其他 API 可用。
今天我有一个 ASP.NET 应用程序,其中每个租户(即客户)都有自己的 URL,例如'A Company' 会有 https://acompany.awesomeservice.com。我正在使用 DNS 将所有租户定向到生产 Web 服务器。
我想要多个生产 Web 服务器并将每个子域分配给一个服务器。例如所以租户 A、B、C 使用服务器 1,租户 D、E、F 使用服务器 2。但我不想为此使用 DNS,因为我希望能够合理地将租户移动到不同的 Web 服务器快速,用于绿蓝部署等。例如,在进行升级时,我可能会:
- 将所有租户移动到服务器 1
- 升级服务器 2
- 先把一些想要新版本的租户搬回去
- 几天后当一切看起来稳定时搬走剩余的租户
似乎使用 IIS URL 重写模块是一种合适的方法。我有一个单独的 IIS 服务器或网站用于 'gateway' 并且每个租户有一个单独的规则,将 URL 重写到他们已分配的任何服务器。
但这是正确的做法吗?其他人是怎么做到的?
我会创建一个工具来将租户分配到不同的服务器,它会使用一些 IIS api 来更新 URL 重写规则(API?)。
正如@Lex-Li在评论中所说,是的,你可以做一个reverse proxy with ARR & URL Rewrite module,这就是我所做的。
其他几个方便的链接:
要通过 API 更新规则,请使用 IIS Administration API 或直接更新配置文件(糟糕!?)。根据需要,还有其他 API 可用。