我有两个 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
。