Как исправить URL сайта WordPress за обратным прокси-сервером - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть сайт WordPress в IIS 8, назовем его 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 и не знаю, как он строит эти URL, поэтому, если вам нужны какие-либо пояснения, пожалуйста, будьте настолько конкретны, насколько это возможно, поэтому я могуулучшить мой вопрос.

ОБНОВЛЕНИЕ

Если я настрою

  • на изолированном сервере
    • siteurl и home до www.mysite.com
    • установить 127.0.0.1 www.mysite.com в файле hosts
  • в открытом доступесервер
    • привязка сайтов IIS 10 www.mysite.com с правилом пересылки www.mysite.com
    • набор WORDPRESS_SERVER_IP www.mysite.com в файле хостов

Iполучить следующее сообщение об ошибке IIS:

ошибка HTTP 400.605 - неверный запрос Запрос не может быть перенаправлен, поскольку он достиг предела Max-Forwards.Сервер может ссылаться на себя в топологии маршрутизации запросов.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы должны установить переменные siteurl и home равными значению прокси-сервера.

Если вы выставляете свой сервер для общего доступа на www.mysite.com, тогда вы должны установить те же значенияв этих переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...