IIS根据子域将请求路由到不同的端口

IIS Route Request To Different Ports Based on Sub-domain

我有一个域,我们称它为domain.com

在我的 DNS 提供商上,我配置了两个子域指向同一个 IP 地址。例如:
sub1.domain.com => 185.146.11.17
sub2.domain.com => 185.146.11.17

我在 IIS 中配置了两个站点,分别侦听端口 8080 和 8081。

现在,由于流量直接通过 185.146.11.17:80,我需要根据请求的子域将其路由到端口 8080 或端口 8081

我读过有关重写规则和反向代理的内容,但对于如何根据请求的子域简单地实现我所需要的内容,我感到非常困惑。

如何解决这个问题?

听起来您需要为自己创建一个 ARR 负载平衡。

先决条件

1.Application 请求路由并 URL 重写安装。

2.ThreeDNS名称,前端一个,后端两个。

3.Three 网站域名:

主站点

子站点 1

SubSite2

4.Create 一个网络场并将这些域添加到您的网络场。

  1. IIS 将在服务器节点的 URL 重写中创建负载平衡路由规则 "ARR_MyServer_loadbance",然后为其添加条件模式。

 <globalRules>
                <rule name="ARR_MyServer_loadbalance" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <action type="Rewrite" url="http://MyServer/{R:0}" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="www.candy.com" />
                    </conditions>
                </rule>
            </globalRules>

6.Go 到配置管理器-> 网络场并将 PreserveHostHeader 设置为 false。 7.Go 到您的网络农场->我的服务器监控和管理,确保所有服务器都健康 现在您可以为您的主站点进行负载平衡了。

请记住在将服务器加入网络场时为每台服务器设置 HTTP 端口。

Applicationhost.config 应该看起来像:

  <webFarm name="MyServer" enabled="true">
            <server address="domain1.candy.com" enabled="true">
                <applicationRequestRouting httpPort="8080" />
            </server>
            <server address="domain2.candy.com" enabled="true">
                <applicationRequestRouting httpPort="8081" />
            </server>
            <applicationRequestRouting>
                <healthCheck url="" />
                <protocol preserveHostHeader="false" />
            </applicationRequestRouting>
        </webFarm>

经过多次挖掘,反复试验和拔头发,我设法解决了这个问题。似乎在这种情况下,IIS 为一个人提供了很多繁重的工作,实际上并不需要任何显式反向代理 and/or 重写规则。

DNS设置如下
sub1.domain.com => 185.146.11.17
sub2.domain.com => 185.146.11.17

所有需要做的是:
1. Stop/remove 默认网站在端口 80.
2. 创建新网站:
2.1.站点名称设置为 sub1.domain.com.
2.2. IP 地址设置为 All Unassigned,端口设置为 80
2.3.主机名设置为 sub1.domain.com.
3. 用 sub2.domain.com.

重复这个过程

按照上述步骤,一切都应该 神奇地 起作用。主机名非常重要,所以一定不要错过。我建议为 HTTPS 设置所有这些,然后创建一个规则,如果请求来自这样的协议,则从 HTTP 重定向。

感谢大家提出建议