IIS Reverse-proxy和URL-Rewrite将URL重写到另一个内部Web服务器中的另一个文件夹

时间:2017-09-15 19:07:33

标签: iis url-rewriting reverse-proxy

请给我一些建议,告诉我如何通过创建URL重写规则来实现以下内容。 我在同一台机器上:

 1. IIS with "mysite.ddns.net/xxxxxx/" accessible via internet
 2. uTorrent with WebUI "192.168.0.5:8080/gui/" which is accessible only via LAN.

我制定了以下规则:

<rule name="root to xxxxxx" enabled="true" stopProcessing="true">
    <match url="^$" />
    <action type="Redirect" url="/xxxxxx/" />
</rule>

<rule name="http to https" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>

<rule name="ReverseProxy_uTorrent_Inbound" enabled="true" stopProcessing="true">
    <match url="^utorrent/(.*)" />
    <action type="Rewrite" url="http://192.168.0.5:8080/{R:1}" logRewrittenUrl="false" />
    <serverVariables>
        <set name="HTTP_ACCEPT_ENCODING" value="" />
    </serverVariables> 
</rule>

因此,要访问uTorrent,我需要输入"mysite.ddns.net/utorrent/gui/" 但是输入"mysite.ddns.net/utorrent/"对我来说会更舒服。 我试图用以下内容替换上述规则:

<rule name="ReverseProxy_uTorrent_Inbound_2" enabled="true" stopProcessing="true">
    <match url="^utorrent/" />
    <action type="Rewrite" url="http://192.168.0.5:8080/gui/" appendQueryString="true" logRewrittenUrl="true" />
    <serverVariables>
        <set name="HTTP_ACCEPT_ENCODING" value="" />
    </serverVariables> 
</rule>

但收到了来自uTorrent的非常奇怪的回答

"Loading...
About
uTorrent µTorrent WebUI
Developers:..."

等等。

我已经搜索了很多,但不幸的是,我还没有找到解决方案。你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有测试它,但应该可以工作:

<rule name="ReverseProxy_uTorrent_Inbound" enabled="true" stopProcessing="true">
    <match url="^utorrent/(.*)" />
    <action type="Rewrite" url="http://192.168.0.5:8080/gui/{R:1}" logRewrittenUrl="false" />
    <serverVariables>
        <set name="HTTP_ACCEPT_ENCODING" value="" />
    </serverVariables> 
 </rule>