ARR代理规则问题

问题描述 投票:0回答:1

我需要使用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>

如果我像这样打开URL,则此规则不起作用:

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这仍然无法正常工作.....

这里怎么了?

iis arr
1个回答
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握手可能会失败。

© www.soinside.com 2019 - 2024. All rights reserved.