Traefik配置HTTP自动重定向至HTTPS失败,求正确配置方案
Traefik HTTP转HTTPS重定向配置修复
你的配置存在两处关键错误,导致404和重定向失效,以下是问题说明和修正后的完整配置:
错误点说明
- HTTPS路由器TLS配置归属错误:你将TLS配置
[http.routers.npm.tls]写在了npm-secure路由器块外,这会导致HTTPS路由器无法关联证书解析器,无法正确处理HTTPS请求。 - 重定向中间件参数类型错误:
permanent字段需要布尔值true,而非字符串"true",Traefik会忽略类型不匹配的配置项。
修正后的traefik_dynamic.toml配置
[http] [http.routers] # HTTP路由器:负责将80端口请求重定向到HTTPS [http.routers.npm] entryPoints = ["web"] rule = "Host(`npm.XXX.de`)" middlewares = ["httpsRedirect"] # 用Traefik内置空服务替代,更规范(重定向无需实际服务) service = "noop@internal" # HTTPS路由器:处理443端口请求,启用TLS证书 [http.routers.npm-secure] entryPoints = ["websecure"] service = "npm" rule = "Host(`npm.XXX.de`)" [http.routers.npm-secure.tls] certResolver = "letsencrypt" [http.services] [http.services.npm] [http.services.npm.loadBalancer] [[http.services.npm.loadBalancer.servers]] url = "http://192.168.1.79/" [http.middlewares.httpsRedirect.redirectScheme] scheme = "https" permanent = true # 修正为布尔值类型
关键配置解释
- HTTP路由器:仅匹配80端口的域名请求,调用重定向中间件完成跳转,使用内置空服务避免不必要的服务绑定。
- HTTPS路由器:绑定443端口,正确关联TLS证书解析器,自动申请/续期Let's Encrypt证书,同时将请求转发到后端服务。
- 重定向中间件:配置永久HTTPS跳转(HTTP 301状态码),参数类型符合Traefik要求。
修改配置后重启Traefik服务即可生效,此时访问http://npm.XXX.de会自动跳转到https://npm.XXX.de,HTTPS请求也能正常转发到后端服务。
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

