У меня работает два 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
.