ARR代理规则问题

时间:2019-11-22 08:43:26

标签: iis arr

我需要使用ARR在IIS中创建代理重写

所以:

我有2台服务器:

https://server1.com
https://server2.com

现在每个人都有虚拟文件夹

https://server1.com
    FilesFolder

https://server2.com
    FilesFolder

我将文件保存在server2中

喜欢:

https://server2.com
    FilesFolder
        users-profile
            test.png

现在,当我打开Chrome浏览器时需要

https://server1.com/FilesFoler/users-profile/test.png

我希望该请求转到

https://server2.com/FilesFoler/users-profile/test.png

现在我为服务器1做代理规则了

测试1:

<rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="https://server2/{C:0}" />
                    <conditions>
                        <add input="{URL}" pattern="/users-profile/.*" />
                    </conditions>
                </rule>
            </rules>

如果我打开以下网址,此规则将无效:

https://server1.com/FilesFoler/users-profile/test.png

但是我打开的工作是: https://server1.com/FilesFoler/FilesFoler/users-profile/test.png

然后我尝试另一条规则;

测试2

 <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="https://server2/FilesFolder/{C:0}" />
                    <conditions>
                        <add input="{URL}" pattern="/users-profile/.*" />
                    </conditions>
                </rule>
            </rules>

但是当我打开https://server1.com/FilesFoler/users-profile/test.png时 这仍然行不通.....

这是怎么了?

1 个答案:

答案 0 :(得分:0)

在这种情况下,如果您的请求是https://server1.com/FilesFoler/users-profile/test.png

当IIS处理条件模式<add input="{URL}" pattern="/users-profile/.*" />时。

然后,您的{C:0}应该是users-profile / test.png。 因此该请求将被重写为

https://server2/users-profile/test.png

代替

https://server2.com/FilesFoler/users-profile/test.png

因此,请将[C:0}替换为{R:1}或{R:0}

   <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="https://server2/{R:0}" />
                    <conditions>
                        <add input="{URL}" pattern="/users-profile/.*" />
                    </conditions>
                </rule>

由于您没有对server2使用ssl-offloading。请确保server2使用的是受信任的证书,否则ARR和Server2之间的SSL握手可能会失败。

如果出现404错误,请记住在IIS管理器->服务器节点->应用程序请求路由缓存->启用代理中启用代理设置。