问题分析
-
访问
http://www.xx.com/wp-admin/触发 302 重定向 -
重定向目标:
http://www.xx.com/wp-login.php?redirect_to=... -
核心需求:通过 Nginx 代理使 WordPress 后台可正常访问
第一步:Nginx 配置
bash
#wordpress配置begin-----
# 主代理配置(处理所有请求)
location / {
# 代理到实际的 WordPress 服务(替换为您的后端地址)
proxy_pass http://0.0.0.0:8036;
# 关键:修复重定向路径
proxy_redirect http://www.xx.com/wp-login.php /wp-login.php;
proxy_redirect http://www.xx.com/wp-admin /wp-admin;
# 传递必要头信息(防止会话丢失)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 处理Cookie路径问题
proxy_cookie_path / "/; HttpOnly; Secure; SameSite=Lax";
proxy_cookie_domain 0.0.0.0:8036 www.xx.com;
}
# 处理登录路径(关键!)
location ^~ /wp-login.php {
proxy_pass http://0.0.0.0:8036/wp-login.php;
# 修复重定向循环问题
proxy_redirect http://www.xx.com/wp-admin /wp-admin;
proxy_redirect http://www.xx.com/wp-login.php /wp-login.php;
# 增强安全性头
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
#wordpress配置end -----
第二步:后端 WordPress 必备配置
在 WordPress 的 wp-config.php中添加:
php
// 强制使用代理域名
define('WP_HOME', 'http://www.xx.com');
define('WP_SITEURL', 'http://www.xx.com');
// 信任代理头
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'] ?? $_SERVER['HTTP_HOST'];