HAProxy & WordPress в подкаталоге - вход в wp-admin перенаправляет в root - PullRequest
0 голосов
/ 09 мая 2019

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

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

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

  • my-website.com / blog (WordPress # 1)
  • my-website.com / foo (WordPress # 2)
  • my-website.com / bar (WordPress # 3)

Вот мой конфигдля 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';

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

...