避免在 IIS 上使用反向代理将 URL 重写为外部应用程序?

Mar*_*lus 3 iis url-rewriting confluence iis-7.5 url-rewrite-module

Confluence IIS 反向代理设置

我已经根据互联网上的说明在 IIS 7.5 上为 Atlassian Confluence 设置了一个反向代理。

我想将所有流量重定向到“docs.unimaze.com”到同一服务器上的“localhost:8090”。

我是这样做的:

  • 已安装的 URL 重写 2.0
  • 已安装的应用程序请求路由 3.0
  • 设置反向代理规则:
    • 匹配 URL:(.*)使用正则表达式匹配模式(忽略大小写)
    • 条件:(无)
    • 服务器变量:(无)
    • 行动:重写http://localhost:8090/{R:1}(附加到查询字符串并停止处理后续规则。

为了使一切正常,我必须做的另一件事(来自https://serverfault.com/questions/76013/iis6-vs-iis7-and-iis7-5-handling-urls-with-plus-sign-in -base-not-querystr ) 是在服务器上运行此命令,以便允许 URL 中带有“加号”的 URL。

%windir%\system32\inetsrv\appcmd set config "WebSiteName" -section:system.webServer/security/requestFiltering -allowDoubleEscaping:true

外部重定向问题

Confluence 本身似乎工作得很好,但是当尝试从外部应用程序编辑模块时(LucidChart 图表失败),因为重定向到外部应用程序也会被重写,例如尝试重定向到这个 URL:

http://docs.unimaze.com/documents/edit/4b157fd9-8e28-4d70-8587-0fdd0839fbca?callback=...

当重定向实际上应该指向外部应用程序时,因此它应该不受重写规则的影响:

https://www.lucidchart.com/documents/edit/4b157fd9-8e28-4d70-8587-0fdd0839fbca?callback=...

有没有简单的方法来解决这个问题?

Mar*_*lus 5

这在这里帮助: appcmd.exe set config -section:system.webServer/proxy /reverseRewriteHostInResponseHeaders:"False" -commit:apphost

在 UI 中,应取消选中与服务器节点上 IIS 中的应用程序请求路由上的此操作对应的设置(选择“服务器代理设置”)。

但是,这会导致无法在 Internet Explorer 11 L 中加载页面 显示页面,但图表所在的位置为空白,并且它会尝试永远加载某些内容。

在 Firefox 和 Chrome 中它运行良好。我不知道为什么它在 IE 11 中“冻结”。将从其他机器上检查是否总是发生这种情况。