【发布时间】:2019-02-19 09:23:40
【问题描述】:
我在 IIS 8 上有一个 WordPress 站点,我们称之为 www.mysite.com,我需要在代理服务器后面隔离(使用 IIS 10)。
到目前为止我所做的是:
- 将
siteurl和home更改为site.mysite.com(以避免连续重定向) - 在新服务器中添加站点
www.mysite.com反向代理到site.mysite.com(在主机文件中定义为旧服务器IP 别名)配置如下<configuration> <system.webServer> <rewrite> <outboundRules rewriteBeforeCache="true"> <clear /> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="true"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://site.mysite.com/(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="true" /> <action type="Rewrite" value="http{R:1}://www.mysite.com/{R:2}" /> </rule> <rule name="RestoreAcceptEncoding" preCondition="NeedRestoringAcceptEncoding" enabled="true"> <match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="true" /> <action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> <preCondition name="NeedRestoringAcceptEncoding"> <add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" /> </preCondition> </preConditions> </outboundRules> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="https://site.mysite.com/{R:1}" /> <serverVariables> <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" /> <set name="HTTP_ACCEPT_ENCODING" value="" /> </serverVariables> </rule> </rules> </rewrite> </system.webServer> </configuration>
很遗憾,这还不够。
尽管有反向代理出站规则,但许多脚本、css 链接和图像指向site.mysite.com(未暴露在互联网上)而不是www.mysite.com。
有没有办法修复这些链接,使其引用www?
有更好的解决方案吗?
我从未使用过 WordPress/PHP,也不知道它是如何构建这些网址的,所以如果您需要任何说明,请尽可能具体,以便我可以改进我的问题。
更新
如果我配置
- 在隔离服务器中
-
siteurl和home到www.mysite.com - 在主机文件中设置
127.0.0.1 www.mysite.com
-
- 在暴露的服务器中
- IIS 10 站点绑定
www.mysite.com与转发规则到www.mysite.com - 在主机文件中设置
WORDPRESS_SERVER_IP www.mysite.com
- IIS 10 站点绑定
我收到以下 IIS 错误:
Errore HTTP 400.605 - 错误请求 无法路由该请求,因为它已达到 Max-Forwards 限制。服务器可能在请求路由拓扑中自引用自身。
【问题讨论】:
标签: php wordpress iis reverse-proxy