解决nginx代理配置下wordpress的 /wp-admin/返回 302 重定向到登录页问题

问题分析

  1. 访问 http://www.xx.com/wp-admin/触发 302 重定向

  2. 重定向目标:http://www.xx.com/wp-login.php?redirect_to=...

  3. 核心需求:通过 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'];
相关推荐
威迪斯特2 小时前
CentOS图形化操作界面:理论解析与实践指南
linux·运维·centos·组件·图形化·桌面·xserver
一方热衷.2 小时前
在线安装对应版本NVIDIA驱动
linux·运维·服务器
独自归家的兔2 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX2 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
春日见2 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
DARLING Zero two♡2 小时前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
消失的旧时光-19432 小时前
Linux 编辑器入门:nano 与 vim 的区别与选择指南
linux·运维·服务器
斯普信专业组2 小时前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp
liu****3 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术