【问题标题】:How to fix urls of wordpress site behind reverse proxy server如何修复反向代理服务器后面的wordpress站点的url
【发布时间】:2019-02-19 09:23:40
【问题描述】:

我在 IIS 8 上有一个 WordPress 站点,我们称之为 www.mysite.com,我需要在代理服务器后面隔离(使用 IIS 10)。

到目前为止我所做的是:

  • siteurlhome 更改为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,也不知道它是如何构建这些网址的,所以如果您需要任何说明,请尽可能具体,以便我可以改进我的问题。

更新

如果我配置

  • 在隔离服务器中
    • siteurlhomewww.mysite.com
    • 在主机文件中设置127.0.0.1 www.mysite.com
  • 在暴露的服务器中
    • IIS 10 站点绑定www.mysite.com 与转发规则到www.mysite.com
    • 在主机文件中设置WORDPRESS_SERVER_IP www.mysite.com

我收到以下 IIS 错误:

Errore HTTP 400.605 - 错误请求 无法路由该请求,因为它已达到 Max-Forwards 限制。服务器可能在请求路由拓扑中自引用自身。

【问题讨论】:

    标签: php wordpress iis reverse-proxy


    【解决方案1】:

    您应该将siteurlhome 变量设置为代理服务器的值。

    如果您在www.mysite.com 向公众公开您的服务器,那么您应该在这些变量中设置相同的值。

    【讨论】:

    • 保持旧服务器公开www.mysite.com,因为新服务器会导致浏览器继续重定向并且从不显示内容。
    • 我根据你的回答更新了我的问题,你能看一下吗?
    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多