使用 docker 标签的 Traefik http 重定向到 https

Traefik http redirect to https using docker label

我在 swarm 模式下使用 traefik 作为 docker 服务。 Traefik 接受一些标签来配置它将如何处理 docker 容器并为其创建代理。

我可以在 docker 服务中定义标签 traefik.frontend.entryPoints=https 来覆盖 Traefik defaultEntryPoints,但用户需要使用 https 发出请求。我想公开入口点 httphttps,但是如果用户使用 http 发出请求,Traefik 会将其重定向到 https.

是否可以使用 entryPoints.http.redirect 作为 docker 标签来强制重定向某些特定服务?我不想在 traefik.toml 文件中设置它,因为它将应用于所有服务,我希望它只应用于某些服务,而不是所有服务。

此致

仍然是一个悬而未决的问题 -> 现在不可能。

https://github.com/containous/traefik/issues/541

由于this merge introduced into traefik version 1.5,现在可以做到:

labels:
- "traefik.frontend.redirect.entryPoint=https"

我对选择的问题有点纠结(这是正确的)所以这里有一些更多的信息。

如果您遵循 Traefik 文档中的 official Let'Encrypt tutorial,您最终会得到以下配置:

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]

entryPoints.http 中有 entryPoints.http.redirect 规则告诉 Traefik 实现重定向到 https。

如果您要挑选应该实现重定向的服务,您首先需要禁用此全局行为:

[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]

此时,您可以将标签应用于要重定向的服务:

labels:
  ...
  - "traefik.frontend.redirect.entryPoint=https"

希望对您有所帮助!