IIS 反向代理/重写规则将请求重定向到另一个端口

IIS 反向代理/重写规则将请求重定向到另一个端口

我正在尝试将http://redmine(IIS 绑定) 的请求重写为http://web01:8080/redmine(apache 绑定且 ruby​​ 为 redmine 提供服务)。请注意,我还有一个 A 记录绑定http://intranethomehttp://web01:80https://web01:443

我主要参考了以下内容:

我相信下面的方法应该可行,但事实并非如此:

<rewrite>
<rules>
  <rule name="ReverseProxyInboundRule1" stopProcessing="true">
    <match url="redmine(.*)" />
    <action type="Rewrite" url="http://web01:8080/redmine{R:1}" logRewrittenUrl="true" />
  </rule>
</rules>
<outboundRules>
  <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
    <match filterByTags="A, Form, Img" pattern="^http(s)?://web01:8080/redmine(.*)" />
    <action type="Rewrite" value="http{R:1}://redmine/{R:2}" />
  </rule>
  <preConditions>
    <preCondition name="ResponseIsHtml1">
      <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
    </preCondition>
  </preConditions>
</outboundRules>
</rewrite>

我在 Apache 中做过类似的事情,但似乎无法理解 IIS 的问题。任何意见都值得赞赏。

答案1

我意识到您可能正在寻找本机的 IIS 解决方案,我确信它可能存在,但过去我曾在企业环境中使用 Helicon Ape(它是 IIS 的 Apache .htaccess/module 实现)成功完成了此操作。

您要做的事情似乎可以通过 Helicon Ape 中的 Apache mod_rewrite/mod_proxy 轻松完成。这款软件一直是我进行 IIS 重写的首选,因为 ISAPI 是一场噩梦,而 IIS 6(我们仍在很多机器上运行)不支持本机重写模块。

设置 Helicon Ape 时需要进行非常少量的配置,例如确保 IIS 组可以访问 Program Files 中的一个 Helicon 目录,但之后一切都很容易,特别是如果您已经熟悉 .htaccess 的话。

在您的默认网站中,您将看到 httpd.conf,您将在其中启用 mod_rewrite 和/或 mod_proxy,然后在您特定网站下的 Helicon Ape 模块中的 .htaccess 中添加您的特定规则。

如果决定采用这种方式,但在配置方面遇到问题,请发布后续信息,我可以提供更具体的说明。仅供参考,Helicon Ape 每次安装最多可获得 3 个站点的许可证。

http://www.helicontech.com/ape/

答案2

在疯狂处理出站规则之前,请先确认入站规则是否有效。这是第一步吗?

<rewrite>
    <rules>
        <rule name="RedirectToRedmine" stopProcessing="true">
            <match url=".*" />                 
            <action type="Redirect" url="http://web01:8080/redmine/{R:0}" />
        </rule>
    </rules>
</rewrite>

相关内容