宝塔1搭建WordPress,a域名a.xxx.com,宝塔2使用域名bxxx.com反理,使用线路机访问,后端在配置机器
- 宝塔1:部署 WordPress,域名 a.xxx.com
- 宝塔2:域名 bxxx.com,通过 Nginx 反代到宝塔1的 WordPress
1️⃣ 前提条件
- 宝塔1的 WordPress 可以被宝塔2访问:
curl -I http://a.xxx.com
- 如果能返回 200 就 OK。
- 宝塔2需要安装 Nginx(宝塔默认自带)并配置域名 b.xxx.com
- 确认宝塔1的 WordPress 域名是 a.xxx.com,并在 WordPress 后台或 wp-config.php 中配置好站点地址(后面我们用反代方式保持 Host 不变)。
测试
curl -I http://a.xxx.com
curl: (6) Could not resolve host: a.xxx.com
这个报错:
说明 宝塔2服务器无法解析 a.xxx.com,即 DNS 解析失败。
🔹 原因
- 宝塔2服务器 DNS 设置不正确
- a.xxx.com 的域名没有解析到宝塔1的公网 IP
- 本地 /etc/hosts 没有配置(如果域名没公网解析)
🔹 解决方案
方案 :修改宝塔2服务器
/etc/hosts
假设宝塔1公网 IP 是 1.2.3.4,可以在宝塔2执行:
echo "1.2.3.4 a.xxx.com" >> /etc/hosts
2️⃣ 宝塔2 Nginx 反代配置(proxy 模式)nginx
HTTP 自动跳转到 HTTPS
if ($scheme = http) {
return 301 https://$host$request_uri;
}
WordPress 反向代理
location / {
proxy_pass http://a.xxx.com; # 宝塔1 WordPress 域名或 IP
proxy_set_header Host a.xxx.com; # 保持 WordPress 原域名,避免 403
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;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
send_timeout 60s;
}
PHP 文件伪静态兼容(可选)
location ~ .php$ {
proxy_pass http://a.xxx.com;
proxy_set_header Host a.xxx.com;
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;
}
怎么实现宝塔1搭建的WordPress,1域名a.xxx.com, 只能被宝塔2访问
方案:不解析 a.xxx.com
- 在 DNS 里不要给 a.xxx.com 配置 A 记录(或只解析到内网IP)。
- 只在宝塔2服务器的 /etc/hosts 写:
1.1.1.1 a.xxx.com
这样只有宝塔2能解析,外网完全无法访问。
图片资源为什么不正确显示?
方法 :用 wp-config.php 强制覆盖
直接在 宝塔1 的 WordPress 根目录 找到 wp-config.php,在结尾(/* That’s all, stop editing! Happy publishing. */ 上面)加:
define('WP_HOME','https://b.xxx.com');
define('WP_SITEURL','https://b.xxx.com');
if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’]) && $_SERVER[‘HTTP_X_FORWARDED_PROTO’] === ‘https’) {
$_SERVER[‘HTTPS’] = ‘on’;
}
保存后,WordPress 无论数据库里写什么,都会强制用 https://b.xxx.com,后台也能正常。