【问题标题】:Traefik 2.4: redirect http to https based on IP / HeaderTraefik 2.4:根据 IP/Header 将 http 重定向到 https
【发布时间】:2021-02-06 14:40:01
【问题描述】:

我正在使用 traefik 以及从 http 到 https 的全局重定向,在 docker-compose 文件中使用此命令

      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
      - "--entrypoints.web.http.redirections.entrypoint.permanent=true"

效果很好。

现在,是否有可能使这个全局重定向基于规则?我想重定向http 到 https 的所有流量,但是如果提供了特定的标头请求来了从特定 IP,重定向应该不会发生

【问题讨论】:

    标签: docker-compose traefik


    【解决方案1】:

    我也有类似的需要根据源 IP 进行重定向。解决方案有 3 个部分:

    1. 规则匹配X-Real-IP Header,
    2. 设置更高的优先级并
    3. 可选择使用中间件排除不应匹配的 IP。

    我在文件提供程序中使用 YAML 格式。优先级基于规则长度,因此您需要使其更大以覆盖长规则。 private-ips 中间件不应被访问,主要用于测试。

    # Private service
    [http.routers.example-private]
        priority = 100
        entrypoints = [ "web-secure" ]
        service = "example-private"
        rule = "Host(`example.com`) && (Headers(`X-Real-Ip`, `127.0.0.1`) || Headers(`My-Header`, `some-value`))"
        middlewares = [ "private-ips@file" ]
    
    # Public service
    [http.routers.example]
        priority = 10
        entrypoints = [ "web-secure" ]
        service = "example"
        rule = "Host(`example.com`)"
        middlewares = [ "redirect-https@file" ]
    
    # Private IPs
    [http.middlewares.private-ips.ipWhiteList]
        sourceRange = [
            "127.0.0.1/32",         # localhost
        ]
    
    # Permanent redirect to HTTPS.
    [http.middlewares.redirect-https.redirectScheme]
        scheme = "https"
        permanent = true
    
    

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      相关资源
      最近更新 更多