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

配置Traefik转发至Apache时出现重定向次数过多问题求助

问题分析与解决方案

重定向循环的核心原因是Traefik提供HTTPS访问,但后端Apache/Django仍在生成HTTP协议的重定向响应,导致浏览器在HTTPS和HTTP之间反复跳转。结合你的配置,具体排查和修复步骤如下:


1. 修正Apache的硬编码重定向配置

原Apache配置中认证后重定向到http://django:80/,这种硬编码HTTP协议的写法会直接触发循环:

  • 将重定向目标改为相对路径(比如/),避免强制指定HTTP协议;
  • 启用Apache的mod_headers模块,添加请求头让后端识别当前协议:
    RequestHeader set X-Forwarded-Proto "https"
    

2. 让Django识别HTTPS代理请求

在Django项目的settings.py中添加以下配置,确保Django知道请求是通过HTTPS代理转发的,生成的URL和重定向会使用HTTPS:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True

3. 完善Traefik路由的服务指向

当前web服务的Traefik标签缺少服务端口的明确配置,Traefik无法正确转发请求到Apache:
在web服务的labels中添加以下两行(替换${VIRTUAL_PORT}为Apache实际监听的端口,比如80):

labels:
  # ... 原有标签 ...
  - "traefik.http.services.chronocommand.loadbalancer.server.port=${VIRTUAL_PORT}"
  - "traefik.http.routers.chronocommand.service=chronocommand"

4. 配置Traefik的HTTP到HTTPS自动重定向(可选)

如果需要强制所有HTTP请求跳转至HTTPS,在Traefik静态配置中修改web入口点:

entryPoints:
  web:
    address: :80
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: :443
    http:
      tls: true

5. 移除Apache的LDAP基础认证

由于已改用Authelia做认证,需确保Apache配置中删除原有LDAP相关的认证规则,避免双重认证或认证失败引发的异常重定向。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:27:35