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

Drupal7配置HTTPS跳转后新增AWS负载均衡CSS/JS请求仍为HTTP如何解决

问题根本原因

你配置的重定向规则逻辑没问题,但Drupal 7生成静态资源链接时,依赖服务端实际收到的请求协议拼接链接前缀。新增AWS负载均衡后,负载均衡到后端Lightsail实例的请求默认走HTTP协议,Drupal接收到的请求本身是HTTP,因此生成的所有站内资源链接默认都是HTTP前缀。你的重写规则仅作用于入站请求,不会修改Drupal输出HTML内容里的资源链接,所以浏览器会直接请求HTTP版本的资源,才会出现该问题。

排查与解决步骤

  • 第一步:确认负载均衡请求头配置
    AWS ALB默认会携带X-Forwarded-Proto头,值为用户真实请求的协议(http/https),你需要先在Drupal配置中开启对这个头的识别,否则Drupal不会判定当前请求为HTTPS。
  • 第二步:修改Drupal 7的settings.php配置
    找到站点根目录下sites/default/settings.php文件,在末尾添加以下配置:
    # 告诉Drupal信任负载均衡发来的X-Forwarded-Proto头
    $conf['reverse_proxy'] = TRUE;
    $conf['reverse_proxy_addresses'] = array($_SERVER['REMOTE_ADDR']);
    # 强制根据X-Forwarded-Proto设置请求协议
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
      $_SERVER['HTTPS'] = 'on';
      $_SERVER['SERVER_PORT'] = 443;
    }
    
    如果你的负载均衡有固定出口IP,建议把reverse_proxy_addresses的值替换为实际的负载均衡IP段,安全性更高。
  • 第三步:清空Drupal全部缓存
    登录Drupal后台,进入「配置」-「性能」,点击「清空所有缓存」,Drupal 7会缓存生成的CSS/JS聚合文件链接,不清空缓存的话旧的HTTP链接还会继续生效。
  • 第四步:检查站点基础URL配置
    确认settings.php里的$base_url参数是否设置为HTTPS前缀的域名,示例:
    $base_url = 'https://你的实际域名.com';
    
    如果之前配置的是HTTP前缀的地址,直接改成HTTPS即可。
  • 第五步:验证资源链接是否生效
    配置完成后可以用curl命令测试页面输出的资源链接是否已经替换为HTTPS:
    curl -s https://你的实际域名 | grep 'script\|link'
    
    确认输出的资源链接前缀都是HTTPS即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:03:03