好,所以我快要死了。这是我的情况:
IIS在80和443上运行的站点- external.foo.com 和 https://external.foo.com
一个单独的Web服务正在同一节点上的端口801上运行一个应用程序-“ web app3”。
我在IIS中为 external.foo.com/app3 创建了一个站点。我需要将来自 http(s)://external.foo.com/app3 的所有流量都路由到具有SSL卸载功能的本地端口801-因此从客户端到IIS的连接是SSL,但是IIS与本地服务的连接是通过端口801的http。
这是我在IIS中的foo / app3上设置的规则,但是它不起作用,我觉得我尝试了1000项无法完全达到目的的操作。
<rewrite>
<rules>
<rule name="HTTP and HTTPS to local Port 801 w/ offloading" enabled="true" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
</conditions>
<action type="Redirect" url="https://external.foo.com:801/{R:0}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
老实说,我的问题在于必须在请求中指定端口801,但我对该区域并不熟悉,无法对此做出正面或反面的解释。在我的几次测试中,我看到同时指定了端口80或443的位置,这些端口不会到达app3。
我还尝试了服务器场/负载平衡路由和规则,但老实说,这让我更加困惑...在某一时刻,我可以让我所有其他站点重定向并加载app3,但不能重定向app3!以下是该规则:
<rewrite>
<globalRules>
<clear />
<rule name="ARR_App3Proxy_loadbalance" enabled="true" patternSyntax="ExactMatch" stopProcessing="true">
<match url="*external.foo.com/app3" />
<action type="Rewrite" url="http://App3Proxy/{R:0}" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
</rule>
</globalRules>
</rewrite>
我是新手-帮忙!
更新:
好吧,我现在已将所有站点都通过HTTPS重定向到app3,并且看来使用ARR卸载工作正常。全局规则如下。
<proxy enabled="true" />
<rewrite>
<globalRules>
<clear />
<rule name="ARR_App3Proxy_loadbalance" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="http://App3Proxy/{R:0}" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
</rule>
</globalRules>
</rewrite>
现在,我只需要专门定位 external.foo.com/app3 ,这样我的其他IIS站点就可以排除在外...我正在研究和测试,但将为您提供任何帮助非常感谢。