我在IIS 8上有一个WordPress网站,我们将其称为www.mysite.com
,我需要在代理服务器(带有IIS 10)后面进行隔离。
到目前为止,我所做的是:
siteurl
和home
更改为site.mysite.com
(以避免连续重定向)www.mysite.com
,并具有对site.mysite.com
(在hosts文件中定义为旧服务器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,也不知道它如何构建这些URL,因此,如果您需要任何澄清,请尽可能具体,这样我可以改善我的问题。
如果我配置
siteurl
和home
至www.mysite.com
127.0.0.1 www.mysite.com
www.mysite.com
,并将转发规则绑定到www.mysite.com
WORDPRESS_SERVER_IP www.mysite.com
我收到以下IIS错误:
错误HTTP 400.605-错误的请求 该请求已达到最大转发限制,因此无法路由。服务器可能在请求路由拓扑中自我引用自己。
答案 0 :(得分:0)
您应将siteurl
和home
变量设置为代理服务器的值。
如果要在www.mysite.com
公开服务器,则应在这些变量中设置相同的值。