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

IIS根据子域将请求路由到不同的端口,iis,reverse-proxy,url-rewrite-module,Iis,Reverse Proxy,Url Rewrite Module,我有一个域名,我们叫它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 我读过关于重写规则和反向代理的书,但是对于如何基于请求的子域简单地实现我所需要的东西

我有一个域名,我们叫它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.安装了应用程序请求路由和URL重写

2.三个DNS名称,一个用于前端,两个用于后端

3.三个有域名的网站:

主站点

子项1

子项2

4.创建web场并将这些域添加到web场。

IIS将在服务器节点的URL重写中创建负载平衡路由规则ARR_MyServer_loadbance,然后为其添加条件模式。 6.转到configuration manager->web场并将PreserveHostHeader设置为false。 7.转到您的web场->我的服务器监视和管理,确保所有服务器都正常运行 现在您可以为主站点实现负载平衡

在将服务器加入web场时,请记住为每个服务器设置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提供了很多繁重的任务,实际上并不需要任何明确的反向代理和/或重写规则

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

我们需要做的就是: 1.停止/删除端口80上的默认网站。 2.使用以下内容创建新网站: 2.1. 站点名称设置为sub1.domain.com。 2.2. IP地址设置为所有未分配,端口设置为80。 2.3. 主机名设置为sub1.domain.com。 3.使用sub2.domain.com重复此过程

遵循以上步骤,一切都会神奇地工作。主机名非常重要,因此请确保不要错过这些。我建议为HTTPS设置这一切,然后创建一个规则,以便在此类协议中出现请求时从HTTP重定向


感谢大家提供的建议。

反向代理是最简单的方法。不管这个概念有多混乱,试着回答一个更具体的问题。
  <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>