WordPress, nginx proxy и подкаталог: wp-login.php перенаправляет в домен

В моей конфигурации NGINX блог WordPress находится на частном сервере. Мой публичный сервер NGINX проксирует содержимое личного сервера для https://www.example.com/blog/ .

location ^~ /blog/ { # A "subdirectory", hiding a proxied server proxy_pass http://192.168.0.5:80/; # The blog resides in the # private's web root, # not in a subdirectory proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; } 

Блог отлично отображается при вызове домена и подкаталога. При вводе wp-login не создается поле перенаправления GET.

https://www.example.com/blog/wp-login.php

Мои параметры siteurl и мои домашние переменные установлены в домен с помощью подкаталога.

Однако после успешного входа в систему я могу увидеть панель управления, но URL-адрес моего браузера переписывается на https://www.example.com/wp-admin , что вызывает проблемы при использовании панели мониторинга.

Как настроить WP для перезаписи URL-адреса в подкаталог, хотя блог находится на прокси-сервере?

(Должны ли подкаталоги на серверах быть симметричными?)

Я также столкнулся с той же проблемой, я нашел обходное решение, чтобы исправить проблему, добавить код ниже в wp-config.php

 $_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/", $_SERVER['REQUEST_URI']); 

WordPress использует две переменные для определения места размещения: WP_HOME и WP_SITEURL . Оба могут быть установлены с помощью панели управления, но я предпочитаю устанавливать их в wp-config.php :

 define( 'WP_SITEURL', 'https://www.example.com/blog' ); define( 'WP_HOME', 'https://www.example.com/blog' ); 

Обычно устанавливается абсолютный URL-адрес (как указано выше), который включает в себя схему и имя хоста, но я предпочитаю использовать относительный URL-адрес при работе с обратным прокси-сервером, например:

 define( 'WP_SITEURL', '/blog' ); define( 'WP_HOME', '/blog' ); 

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