Вопрос или проблема
Я управляю своим основным веб-сайтом на 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
. Ваш текущий метод конфигурации может работать для отображения страниц блога, но имеет ограничения, особенно в части администрирования.
Применение
-
Настройка прокси-сервера
Текущая конфигурация проксирования
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 получает корректные данные о запросах.
-
-
Конфигурация WordPress
WordPress настроен для работы на конкретном URL и если Site Address (URL) и WordPress Address (URL) отличаются, это может привести к проблемам, как в вашем случае.
-
Рассмотрите возможность использования плагинов, таких как ‘WP Reverse Proxy’, которые могут помочь адаптировать работу WordPress в условиях обратного проксирования.
-
Также можно использовать файл
.htaccess
на вашем основном сайте с Rewrite правилами, чтобы корректировать запросы к панели администрирования WordPress.
-
-
Изменение базы данных и конфигурация
- Проверьте конфигурацию базы данных WordPress, чтобы исключить некорректные записи, которые могут вмешиваться в процессы обновления или редактирования контента. Таблицы
wp_options
могут содержать критичные настройки URL.
- Проверьте конфигурацию базы данных WordPress, чтобы исключить некорректные записи, которые могут вмешиваться в процессы обновления или редактирования контента. Таблицы
-
Обработка ошибок обновления
Error "Updating failed. You are probably offline" может быть вызван проблемами с REST API WordPress, которые могут не работать должным образом через ваш текущий обратный прокси.
-
Используйте разработческие инструменты браузера для проверки ошибок консоли и сетевых запросов, чтобы понять какие именно вызовы не проходят и почему.
-
Можно настроить безопса следующий заголовок проксирования, чтобы устранить проблему с кросс-доменом:
add_header Access-Control-Allow-Origin *;
-
-
Дополнительные Настройки
- Рассмотрите возможность настройки поддоменов с использованием SSL-сертификатов, чтобы исключить ошибки, связанные с безопасностью.
Выводы и рекомендации
Сложность раскрытой задачи заключается в пересечении конфигурации нескольких серверов и соответствия настроек WordPress. В настоящее время существует множество плагинов и дополнительной документации, что может помочь в реализации вашей идеи. Важно учитывать выстроенность системы перенаправлений и грамотность проксирования заголовков, чтобы обеспечить полноценное взаимодействие между серверами.