HAProxy 和 WordPress 在子目录中 — 登录 wp-admin 重定向到 root

HAProxy 和 WordPress 在子目录中 — 登录 wp-admin 重定向到 root

我有两个 VPS 在运行。一个运行 HAProxy,另一个运行 WordPress。两个 VPS 都启用了私有网络,我可以curl使用其私有 IP 地址从 HAProxy 服务器顺利访问 WordPress 网站。

以下是我的 WordPress 网站的 URL 设置:

在这种情况下,HAProxy 正在执行 SSL 终止,因为我计划稍后使用以下 URL 安装更多 WordPress 站点:

  • my-website.com/blog(WordPress 排名第一)
  • 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';

我是不是漏掉了什么?这里出了什么问题?

答案1

您已使用 配置了 WordPress 基本 URL 。登录后,https://example.com/您应该能够手动转到。然后在 WordPress 的常规设置中正确配置基本 URL ()。https://example.com/blog/wp-admin/https://example.com/blog/

如果这不起作用,您可以在数据库中手动配置 URL,设置在表中wp_options

相关内容