将子域名反向代理到IIS7上的子文件夹

将子域名反向代理到IIS7上的子文件夹

我目前正在尝试在我们公司实施 Owncloud 系统。我已在防火墙后面的内部 Web 服务器上启动并运行 Owncloud 系统。我可以通过导航到servername.company.co.nz/owncloud

我们有一个面向公众的 IIS Web 服务器 (SBS 2012)。我想将其用作云安装的反向代理。我读过一些关于如何使用 IIS 上的 URL 重写和 ARR 实现这一点的文章和教程 - 这篇文章似乎是一个不错的开始:基于域名主机的IIS 7反向代理?

但到目前为止我还无法创建任何有效的反向代理规则。

基本上,我想要一个子域名cloud.company.co.nz来反向代理到内部网络服务器路径,server.company.co.nz/owncloud但还没能弄清楚如何实现这一点。

我目前在 IIS 服务器上有一个与主机名绑定的新网站cloud.company.co.nz,但这就是我在不影响我们的 Exchange Web 服务的情况下所能完成的全部工作。

请记住我是 IIS 新手。在此阶段,任何帮助都将不胜感激。

编辑1:

根据@jotap的建议,我的web.config现在看起来像这样。但是,我得到的只是503错误。有什么想法可以解释为什么我会得到这个错误吗?此外,我应该在哪里查看日志等来寻找线索?

干杯

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" enabled="false" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://1.2.3.4/owncloud{R:1}" /> </rule> </rules> <outboundRules> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="false"> <match filterByTags="A, Form, Img" pattern="^http(s)?://1.2.3.4/owncloud/(.*)" /> <action type="Rewrite" value="http{R:1}://cloud.company.co.nz/{R:2}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer> </configuration>

答案1

当谈到使用 IIS 和 ARR 进行反向代理时,细节决定成败,实现这一点的基本步骤如下:

  • 安装 ARR 和 URLRewrite
  • 配置 ARR 进行反向代理:IIS 的服务器级别 --> 应用程序请求路由缓存 --> 服务器代理设置
    • 最基本的设置是“启用代理”,其余设置保持不变。
  • 配置站点以将所有请求代理到新主机。这可以通过 GUI 完成,或者您可以使用此 web.config 来开始(将其放在执行代理的站点的根目录中):

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="inbound"> <match url="(.*)" /> <action type="Rewrite" url="http://server.company.co.nz/owncloud/{R:0}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

不确定您是否熟悉正则表达式,它基本上是说“捕获主机名后的 URL,并向 server.company.co.nz 发出请求,将捕获的 URL 附加到 owncloud 子目录的末尾”。

请注意,如果后端的站点正在压缩内容,您可能会遇到问题(您将收到 500 错误)。此外,如果它有效,您可能会发现所有图像和 CSS 都已损坏,在这种情况下,您还必须配置出站重写,但这取决于您的后端,规则特定于您可能遇到的问题,因此请看看您的情况。您可能需要再做十几次调整(或更多)才能解决问题。

相关内容