Как установить WordPress в подпапку, но разместить на другом хостинге?

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

Я управляю своим основным веб-сайтом на AWS, скажем так, это https://example.com. Я хочу иметь блог на WordPress на https://example.com/blog. Однако, он будет размещен в другом месте (Dreamhost, если быть точным).
Я пытался настроить это следующим образом:

  • создал поддомен blog.example.com на Dreamhost и установил экземпляр WordPress;
  • установил WordPress Address (URL) как https://blog.example.com;
  • установил Site Address (URL) как https://example.com/blog;
  • настроил перенаправление nginx следующим образом:
        location /blog {
            proxy_pass https://blog.example.com/;
        }

Это в основном работает. https://example.com/blog открывается и имеет некоторые посты, например https://example.com/blog/post1.

Однако, если я попытаюсь войти в админку wordpress по адресу https://example.com/blog/wp-admin, меня перенаправляет на https://blog.example.com/wp-admin. Меня это само по себе не беспокоит; однако, я не могу редактировать посты в этом режиме. Если я открываю редактор постов, изменяю что-то и пытаюсь сохранить, появляется сообщение об ошибке: “Ошибка обновления. Вероятно, вы офлайн.”

Чтобы успешно отредактировать пост, мне нужно изменить Site Address с https:// example.com/blog на https:// blog.example.com, отредактировать пост, а затем снова поменять его обратно; но это, очевидно, не решение.

Какие-нибудь идеи? Заранее спасибо!

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

Для решения задачи размещения блога WordPress в поддиректории вашего основного сайта, который размещен на AWS, но сам блог хостится на другой платформе, в данном случае Dreamhost, необходимо учесть несколько нюансов, связанных с конфигурацией серверов и правильной настройкой WordPress. Давайте подробно разберем каждый аспект этой проблемы.

Теория

Веб-сайт обычно размещается на одном сервере, что упрощает управление ресурсами и конфигурациями. Однако требуется разместить WordPress-блог в поддиректории основного сайта, находящегося на AWS, а сам блог физически будет на Dreamhost, возникают вопросы о правильной настройке перенаправлений и обработки запросов. В данном случае основной целью является обеспечение целостности работы блога и возможность управления контентом через панель администрирования WordPress.

Примеры

Вы уже начали процесс правильно, создав поддомен blog.example.com на Dreamhost и установив на него WordPress. Затем вы применили конфигурацию обратного проксирования на сервере Nginx, что позволяет направлять запросы с https://example.com/blog к поддомену https://blog.example.com. Ваш текущий метод конфигурации может работать для отображения страниц блога, но имеет ограничения, особенно в части администрирования.

Применение

  1. Настройка прокси-сервера

    Текущая конфигурация проксирования location /blog с использованием proxy_pass https://blog.example.com/ является подходящей для направления запросов, но требует доработки. Работая с обратным прокси-сервером, важно учитывать перенаправление заголовков и запретов редиректов, которые могут мешать корректной работе.

    • Убедитесь, что проксируемые заголовки корректно передаются между серверами. Добавьте такие параметры как:

      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      Это гарантирует, что сервер WordPress со стороны Dreamhost получает корректные данные о запросах.

  2. Конфигурация WordPress

    WordPress настроен для работы на конкретном URL и если Site Address (URL) и WordPress Address (URL) отличаются, это может привести к проблемам, как в вашем случае.

    • Рассмотрите возможность использования плагинов, таких как ‘WP Reverse Proxy’, которые могут помочь адаптировать работу WordPress в условиях обратного проксирования.

    • Также можно использовать файл .htaccess на вашем основном сайте с Rewrite правилами, чтобы корректировать запросы к панели администрирования WordPress.

  3. Изменение базы данных и конфигурация

    • Проверьте конфигурацию базы данных WordPress, чтобы исключить некорректные записи, которые могут вмешиваться в процессы обновления или редактирования контента. Таблицы wp_options могут содержать критичные настройки URL.
  4. Обработка ошибок обновления

    Error "Updating failed. You are probably offline" может быть вызван проблемами с REST API WordPress, которые могут не работать должным образом через ваш текущий обратный прокси.

    • Используйте разработческие инструменты браузера для проверки ошибок консоли и сетевых запросов, чтобы понять какие именно вызовы не проходят и почему.

    • Можно настроить безопса следующий заголовок проксирования, чтобы устранить проблему с кросс-доменом:

      add_header Access-Control-Allow-Origin *;
  5. Дополнительные Настройки

    • Рассмотрите возможность настройки поддоменов с использованием SSL-сертификатов, чтобы исключить ошибки, связанные с безопасностью.

Выводы и рекомендации

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

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

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