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

Google Load Balancer出现502/302重定向错误 重写规则是否有误

你的问题确实和重写规则配置错误,加之后端转发逻辑与负载均衡配置不匹配有直接关系,核心问题如下:

  1. 80端口虚拟主机未启用RewriteEngine,你写的www跳转规则根本不会执行
  2. 所有HTTPS请求经过Google Load Balancer后,是通过HTTP协议转发到你后端Apache的80端口,你写的443端口虚拟主机完全没有接收任何请求,对应的www跳转规则自然不生效
  3. 没有配置HTTP到HTTPS的跳转逻辑,现有的80端口跳转目标还是HTTP协议,完全不符合你的需求
  4. 你配置的SetEnvIf X-Forwarded-Proto https HTTPS=on没有用到,Apache无法识别用户侧实际的请求协议,容易出现跳转死循环

修正方案

直接替换你现有的配置即可,原443端口虚拟主机可以直接删除,因为当前负载均衡和后端走HTTP协议,不会有请求打到443端口:

SetEnvIf X-Forwarded-Proto https HTTPS=on
<VirtualHost _default_:80>
  DocumentRoot "/opt/bitnami/apache/htdocs"
  Include "/opt/bitnami/apps/letsencrypt/conf/httpd-prefix.conf"
  <IfModule mod_proxy.c>
    ProxyPass /.well-known !
  </IfModule>
  RewriteEngine On
  
  # 排除Let's Encrypt证书验证路径
  RewriteCond %{REQUEST_URI} ^/\.well-known
  RewriteRule ^ - [L]
  
  # 带www的请求直接一步跳转到HTTPS非www域名,避免多次跳转
  RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  RewriteCond %{HTTP_HOST} !^localhost
  RewriteCond %{HTTP_HOST} !^[0-9]+.[0-9]+.[0-9]+.[0-9]+(:[0-9]+)?$
  RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]
  
  # 不带www的HTTP请求直接跳HTTPS
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteCond %{HTTP_HOST} !^localhost
  RewriteCond %{HTTP_HOST} !^[0-9]+.[0-9]+.[0-9]+.[0-9]+(:[0-9]+)?$
  RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=permanent,L]
</VirtualHost>

额外负载均衡配置确认

修改完Apache配置后,需要确认Google Load Balancer的配置符合要求:

  • 前端配置同时开放80(HTTP)和443(HTTPS)端口,443端口绑定覆盖www和非www域名的有效SSL证书
  • 后端服务协议保持HTTP,端口对应Apache的80端口
  • 健康检查路径设置为/.well-known/或者站点正常可访问路径,确保返回200状态码

配置完成后重启Apache服务,清空浏览器缓存再测试即可解决所有报错,实现HTTP跳HTTPS、www跳非www的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:45:01