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 一个网络场并将这些域添加到您的网络场。
- 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 重定向。
感谢大家提出建议
我有一个域,我们称它为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 一个网络场并将这些域添加到您的网络场。
- 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。
请记住在将服务器加入网络场时为每台服务器设置 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 重定向。
感谢大家提出建议