Назад | Перейти на главную страницу

HAProxy и WordPress в подкаталоге - вход в wp-admin перенаправляет на root

У меня работает два VPS. Один работает с HAProxy, а другой - с WordPress. На обоих VPS включена частная сеть, и я могу curl сайт WordPress штрафуется с сервера HAProxy, используя его частный IP-адрес.

Вот настройки URL для моего сайта WordPress:

В этом случае HAProxy выполняет завершение SSL, потому что я планирую позже установить больше сайтов WordPress со следующими URL-адресами:

Вот мой конфиг для HAProxy.

global
  # default global config goes here
  maxconn 2048
  tune.ssl.default-dh-param 2048

defaults
    log global
    mode    http
  option forwardfor
  option http-server-close
    option  httplog
    option  dontlognull
  timeout connect 5000
  timeout client  50000
  timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http
  stats enable
  stats uri /stats
  stats realm Haproxy\ Statistics
  stats auth xxx:xxx

frontend my-wordpress-frontend
  bind *:443 ssl crt /etc/ssl/private/my-website.com.pem
  option http-server-close
  http-request set-header X-Forwarded-Proto https if { ssl_fc }
  acl blog path_beg /blog
  acl wpadmin path_beg /wp-
  acl blog_search query -m reg ^s=.*$
  acl blog_preview query -m reg ^p=.*$
  acl root path /
  redirect location https://my-website.com/blog/ if root
  use_backend my-wordpress-backend if blog OR blog wpadmin OR blog blog_search OR blog blog_preview
  default_backend my-wordpress-backend

backend my-wordpress-backend
   redirect scheme https if !{ ssl_fc }
   reqrep ^([^\ :]*)\ /blog/(.*) \1\ /\2
   reqrep ^([^\ :]*)\ /blog/wp-admin/(.*) \1\ /\2
   cookie SERVERID insert indirect nocache
   server www-1 private_ip_address:80 check cookie

Все выглядит нормально, кроме одного. Я вижу страницу входа по адресу https://my-website.com/blog/wp-login.php. Но после входа в систему он перенаправляет меня на https://my-website.com/wp-admin.

Я не этого хочу. Я ожидал получить https://my-website.com/blog/wp-admin.

Я добавил это в мой wp-config.php но это не помогло:

// Start custom config ---
define( 'FORCE_SSL_ADMIN', true );
define('FORCE_SSL_LOGIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
// End custom config ---

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

Я что-то здесь пропустил? Что здесь не так?

Вы настроили базовый URL-адрес WordPress с помощью https://example.com/. У вас должна быть возможность вручную перейти к https://example.com/blog/wp-admin/ после входа в систему. Затем правильно настройте базовый URL (https://example.com/blog/) в общих настройках WordPress.

Если это не сработает, вы можете вручную настроить URL-адрес в базе данных, настройка находится в таблице wp_options.