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

Rocky Linux升级后Traefik代理Cockpit出现ERR_TOO_MANY_REDIRECTS错误

解决Rocky Linux 9.1下Traefik代理Cockpit的重定向与网关错误

问题根源分析

  • ERR_TOO_MANY_REDIRECTS:Rocky Linux 9的Cockpit默认强制HTTPS跳转,当Traefik以HTTP协议转发请求到Cockpit时,Cockpit会把请求重定向到HTTPS,而Traefik又会将HTTPS请求转成HTTP发给Cockpit,形成无限循环。
  • Bad Gateway(用127.0.0.1):Traefik运行在Docker容器内,容器的127.0.0.1指向容器自身而非宿主机,因此无法访问宿主机上的Cockpit服务。

修复步骤

1. 调整Traefik配置,解决重定向循环

修改Cockpit服务的转发配置,让Traefik以HTTPS协议连接Cockpit,同时添加信任头避免Cockpit强制跳转:

http:
  routers:
    cockpit:
      rule: "Host(`cockpit.mywebsite.com`)"
      service: cockpit-service
      priority: 1000
      tls:
        certresolver: myresolver
      entryPoints:
        - websecure
      middlewares:
        - cockpit-headers
  services:
    cockpit-service:
      loadBalancer:
        servers:
          - url: "https://192.168.0.54:9090"
        serverTLSConfig:
          insecureSkipVerify: true # 跳过Cockpit自签名证书验证
  middlewares:
    cockpit-headers:
      headers:
        customRequestHeaders:
          X-Forwarded-Proto: "https"
          X-Forwarded-For: "192.168.0.54"

2. 解决Docker容器访问宿主机Cockpit的问题

如果不想用宿主机局域网IP,可选择以下方式:

  • Linux环境下,启动Traefik容器时添加--add-host=host.docker.internal:host-gateway参数,之后在配置中用https://host.docker.internal:9090作为后端地址
  • 确保宿主机防火墙开放9090端口,Traefik容器能正常访问宿主机IP的该端口

3. 调试级Cockpit配置修改(可选,不推荐生产环境)

若上述配置仍有问题,可临时修改Cockpit配置文件/etc/cockpit/cockpit.conf,允许HTTP访问并信任转发头:

[WebService]
Origins = https://cockpit.mywebsite.com wss://cockpit.mywebsite.com
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true

4. 重启服务生效

  • 重启Traefik容器:docker restart traefik
  • 重启Cockpit服务:systemctl restart cockpit.socket cockpit.service

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:15:20