【问题标题】:Rewrite to other server重写到其他服务器
【发布时间】:2017-12-08 12:05:23
【问题描述】:

我的应用程序托管在 8050 端口下的 tomcat 中; mydomain:8050。现在,我想要一个友好的 url,比如 mydomain.com 用于访问 mydomain:8050 而客户端不会看到 URL 中的端口号。客户端应始终看到应在内部解析为 mydomain:8050mydomain.com

我在端口 80 上运行 IIS 服务器。我在其中创建了一个站点,只是为了使用可以解析为 mydomain:8050 的重写选项。它不适用于我使用的模式

模式: ((?:[^\/\n]|\/\/)+)(.*) 重写网址: {R:1}:8050{R:2}

然后我在端口 90 上安装了 apache http 服务器。在 IIS 站点中使用重定向将 URL 重定向到 mydomain:90$S$Q,然后在 Apache 中使用 rewrite 在内部将其重定向到 mydomain:8050。这在我有一个查询字符串时有效,例如mydomain.com/queryString,但如果我只输入mydomain.com,则无效。我可以看到它重定向到mydomain:90 并在没有执行任何重写规则的情况下停在那里。这也会将 URL 更改为 mydomain:90 并且对客户端可见。

我的要求是,当用户输入 mydomain.com 时,它应该在内部解析为 mydomain:8050(如果有的话,带有查询字符串),而客户端不会看到它。我在端口 80 上运行 IIS,在端口 90 上运行 apache。我怎样才能做到这一点?我确信这可以在 IIS 的重写规则中处理,但我不知道该怎么做。

【问题讨论】:

    标签: apache mod-rewrite iis url-rewriting


    【解决方案1】:

    重写到另一台服务器基本上是代理。我们需要的是一个 IIS 中的反向代理设置,基本上代理您的所有请求 从http://example.comhttp://example:8050/(or 更好 http://localhost:8050)

    • 确保您在 IIS 上安装了 ARR 模块
    • 像这样创建反向代理规则
    <rule name="ReverseProxyInboundRule1" stopProcessing="true">
       <match url="(.*)" />
       <conditions>
        <add input="{CACHE_URL}" pattern="^(https?)://" />
       </conditions>
       <action type="Rewrite" url="{C:1}://mydomain:8050/{R:1}" />
    </rule>
    

    请注意,由于 Apcahe 和 IIS 在同一台服务器上,您可以使用 localhost:8050 作为后端代理。

    编辑:

    此外,如果您有任何从后端代理返回的重定向,并且您不想重定向 Location 标头,您可以通过取消选中应用程序请求路由中的“Reverse rewritehost in response headers”来做到这一点

    • 在 IIS 管理器中选择服务器节点
    • 转到应用请求路由缓存
    • 点击服务器代理设置
    • 取消选中“响应标头中的反向重写主机”

    【讨论】:

    • 我试过这个,但我没有看到它重写为mydomain:8050。访问mydomain.com 时出错
    • 它给出了什么错误?您是否安装了 ARR,否则它将无法工作
    • 抱歉,我错过了 ARR。如何检查它是否已安装?我对 IIS 相当陌生。
    • 我尝试安装 ARR,它说它已经安装。所以我相信它已经在那里了。
    • 所以重写规则后的问题是我访问mydomain.com,它在内部重写为mydomain:8050,内部重定向到我的单点登录服务器以进行身份​​验证,其网址为some.sso.com/context/some-string。但是,我看到它重定向到mydomain.com/context/some-string 失败并出现错误404。我猜some.sso.com... 被转换为mydomain.com/context ... 这是不正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2015-10-22
    • 2015-11-10
    • 2015-12-01
    • 1970-01-01
    • 2018-01-27
    • 2015-10-27
    相关资源
    最近更新 更多