You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTTP WordPress部署于HTTPS反向代理后可行吗?(混合内容报错)

解决NGINX反向代理下WordPress资源链接HTTP被拦截的问题

方案1:直接修改WordPress站点URL(最彻底)

WordPress会把站点的绝对URL硬编码到所有资源链接里,这是问题的根源。直接修改ServerB上的WordPress配置就能解决:

  • 登录ServerB的WordPress后台,进入「设置」→「常规」
  • 将「WordPress地址(URL)」和「站点地址(URL)」都改成ServerA的HTTPS域名(比如https://your-domain.com)
  • 保存后,所有CSS、图片资源的链接会自动切换成正确的HTTPS地址,彻底解决拦截问题

如果没法登录后台,直接修改ServerB上的wp-config.php文件,添加以下代码:

define('WP_HOME','https://your-domain.com');
define('WP_SITEURL','https://your-domain.com');

方案2:NGINX反向代理时重写响应内容(适合无法修改ServerB的场景)

如果不能碰ServerB的配置,在ServerA的NGINX反向代理配置里添加响应内容替换规则,把所有http://1.1.1.1替换成你的HTTPS域名:

location / {
    proxy_pass http://1.1.1.1;
    # 传递必要的代理头,让WordPress识别真实请求协议和域名
    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;

    # 替换响应中的旧URL为HTTPS域名
    sub_filter 'http://1.1.1.1' 'https://your-domain.com';
    sub_filter_once off; # 替换所有匹配项,而非仅第一个
    sub_filter_types text/html text/css text/javascript application/javascript; # 指定需要处理的内容类型
}

注意:要确保你的NGINX安装了ngx_http_sub_module模块,大部分默认编译的NGINX都会包含这个模块。

方案3:尝试使用相对路径(不推荐,兼容性差)

理论上可以让WordPress生成相对路径的资源链接,但WordPress核心大量依赖绝对URL,这么做会导致后台功能、RSS订阅、媒体库等出现异常。如果一定要尝试,在ServerB的主题functions.php里添加以下代码:

add_filter('wp_get_attachment_url', function($url) {
    return str_replace(home_url(), '', $url);
});
add_filter('site_url', function($url, $path) {
    if (empty($path)) return home_url();
    return $path;
}, 10, 2);

但强烈建议不要用这个方案,后续维护会有一堆坑。

内容的提问来源于stack exchange,提问作者MW_DEVEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:57:22