Как запустить WordPress за обратным прокси, чтобы расширения все еще могли определять путь

Вопрос или проблема

Мы управляем интернет-магазином example.com и сервером WordPress на wordpress.example.com

Сервер WordPress подключен к основному домену через обратный прокси.

    ProxyPass /blog https://wordpress.example.com
    ProxyPassReverse /blog https://wordpress.example.com

Это работает довольно хорошо. Но некоторые модули, например, AMP, не могут определить подкаталог.

Смотрите также этот вопрос на форуме WordPress:

https://wordpress.org/support/topic/relamphtml-url-with-proxy/#post-12228181

Каков правильный способ работы WordPress за таким прокси? Есть ли лучший способ настроить прокси или плагин?

Следующая настройка может сработать:

  • на wordpress.example.com сделать так, чтобы Apache слушал также example.com
  • поместить блог в тот же подпапку
  • прокси-передача ProxyPass /blog https://wordpress.example.com
  • ProxyPreserveHost On

Таким образом, REQUEST_URI, видимый с хоста WordPress, фактически будет реальным URL-адресом, который был запрошен с фронтального прокси.

Ответ или решение

Чтобы правильно настроить WordPress за обратным прокси-сервером и обеспечить корректное определение пути для всех расширений (например, для модуля AMP), важно учесть несколько технических моментов. В этой статье мы подробно рассмотрим необходимые шаги и основные настройки.

Понять контекст

У вас есть веб-магазин на домене example.com, а WordPress-сервер работает на wordpress.example.com. Для обеспечения доступа к WordPress через основной домен, вы используете конфигурацию обратного прокси. Однако некоторые модули (в частности, AMP) не могут корректно определять подкаталог, что может привести к неправильным URL-адресам и неожиданному поведению.

Шаги для настройки обратного прокси

  1. Настройка Apache на wordpress.example.com

    Убедитесь, что ваш сервер Apache принимает запросы не только на поддомен wordpress.example.com, но и на основной домен example.com. Это можно сделать с помощью следующих директив:

    <VirtualHost *:80>
       ServerName wordpress.example.com
       ServerAlias example.com
       ...
    </VirtualHost>
  2. Настройка ProxyPass

    Ваша конфигурация Reverse Proxy выглядит следующим образом:

    ProxyPass /blog https://wordpress.example.com
    ProxyPassReverse /blog https://wordpress.example.com

    На этом этапе убедитесь, что вы также добавили ProxyPreserveHost On в свою конфигурацию. Эта директива позволяет прокси-серверу сохранять заголовок Host, что важно для корректного формирования URL-адресов:

    ProxyPreserveHost On
  3. Использование правильного REQUEST_URI

    Убедитесь, что REQUEST_URI, воспринимаемый WordPressом, соответствует реальному URL, запрашиваемому на фронте. Для этого вам может потребоваться убедиться, что WordPress настроен корректно:

    • Настройте WordPress для правильного использования URL. Перейдите в админ-панель WordPress и в разделе "Настройки" установите "Адрес WordPress (URL)" и "Адрес сайта (URL)" в:
      https://example.com/blog
  4. Обработка путей в плагинах

    Некоторые плагины могут использовать абсолютные пути. Чтобы убедиться, что они работают корректно, проверьте у них в настройках возможность добавления пути подкаталога (/blog). Если это невозможно, возможно потребуется внести изменения в код плагина или использовать фильтры, предоставляемые самим WordPress для изменения возвращаемых URL.

  5. Тестирование и отладка

    После внесения всех изменений обязательно протестируйте сайт. Обратите внимание на следующие моменты:

    • Все ссылки на странице корректно отражают новый путь.
    • Функциональность плагинов, таких как AMP, работает без ошибок.
    • Используйте инструменты разработчика в браузере для поиска проблем с CORS- и CSP-заголовками, которые могут возникнуть из-за конфигурации прокси.

Заключение

Настройка WordPress за обратным прокси-сервером требует тщательного внимания к деталям, особенно в части конфигурации путей и заголовков. Следуя вышеописанным рекомендациям, вы сможете обеспечить корректную работу всех модулей и плагинов. Удачи в вашей настройке!

Оцените материал
Добавить комментарий

Капча загружается...