【问题标题】:Traefik on Kubernetes does not keep path over redirectKubernetes 上的 Traefik 不会通过重定向保留路径
【发布时间】:2019-03-04 14:30:51
【问题描述】:

我在 Kubernetes 上有一个 Traefik,它充当入口和负载均衡器。 我有这样的入口设置:

{
    "apiVersion": "extensions/v1beta1",
    "kind": "Ingress",
    "metadata": {
        "name": "nppl-ingress",
        "annotations": {
            "kubernetes.io/ingress.class": "traefik",
            "traefik.frontend.rule.type": "PathPrefixStrip"
        }
    },
    "spec": {
        "rules": [
            {
                "host": "" ,
                "http": {
                    "paths": [
                        {
                            "path": "/discover-service",
                            "backend": {
                                "serviceName": "discover-service",
                                "servicePort": "discover-port"
                            }
                        },
                        {
                            "path": "/config-server",
                            "backend": {
                                "serviceName": "config-server",
                                "servicePort": "config-port"
                            }
                        }

                    ]
                }
            }
        ]
    }
}

例如,当我点击“http://IP/config-server”时,因为我对该服务有基本身份验证,该服务会通过“http://IP/login”进行重定向,所以我得到了 404,但我期待的是“http://IP/config-server/login ”。 我的配置有什么问题?我还在规则类型下尝试了“PathPrefix”和“Path”,但它不起作用。 当我的服务执行重定向时,我需要保留我的基本路径。

【问题讨论】:

    标签: kubernetes traefik traefik-ingress


    【解决方案1】:

    这里的问题是PathPrefixStrip 删除了/config-server,它最初只使用/ 将请求转发到您的后端。但是,当您的后端重定向时,这是一个新请求,并且 Ingress 不理解对 //login 的请求。您可以为每个后端创建两个 Ingress(es),并在每个后端使用单个后端,并带有指向 / 的路径。但这意味着添加一个新的入口类和the good news is that Traefik supports it。你也可以试试an nginx ingress,它有--ingress-class 选项。

    您可以找到有关如何创建多个入口控制器here的更多信息

    如果您想要单个 Ingress,这也很棘手,因为您可能必须在应用中添加逻辑才能理解 /config-server 路径。

    【讨论】:

    • 您能举个例子吗?我已经在 / 下映射了配置服务器,所以现在我有两个带有 / 路径和 /config-server 路径的入口,但是在 / 下我有一个现在不再显示的 traefik 仪表板。
    • 所以添加了更多细节?你会考虑使用 nginx 入口吗?您可以更改ingress class,这将允许您使用多个入口。
    • 另外,为 Traefik 开了一个ticket
    • 您能否提供一些为每个后端创建两个入口的示例?还是谢谢你的票!
    • @Justin 添加了更多详细信息。基本上是一些信息here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多