Kubernetes NGINX ingress auth url返回404,但端点存在

Kubernetes NGINX ingress auth url返回404,但端点存在,kubernetes,docker-for-windows,nginx-ingress,docker,Kubernetes,Docker For Windows,Nginx Ingress,Docker,添加注释: annotations: nginx.ingress.kubernetes.io/auth-url: http://my-auth-service.my-api.svc.cluster.local:8080 …对我的入口规则的响应导致入口控制器发出500响应(入口在没有它的情况下工作) 该服务存在,我可以通过ssh连接到入口控制器并将其卷曲,从而获得响应: curlhttp://my-auth-service.my-api.svc.cluster.local:8080生

添加注释:

  annotations:
    nginx.ingress.kubernetes.io/auth-url: http://my-auth-service.my-api.svc.cluster.local:8080
…对我的入口规则的响应导致入口控制器发出500响应(入口在没有它的情况下工作)

该服务存在,我可以通过ssh连接到入口控制器并将其卷曲,从而获得响应:

curlhttp://my-auth-service.my-api.svc.cluster.local:8080
生成一个200响应

我检查了入口控制器日志,但它说服务返回了
404
。如果我可以卷曲到同一个URL,为什么它会返回
404

2019/07/01 20:26:11 [error] 558#558: *443367 auth request unexpected status: 404 while sending to client, client: 192.168.65.3, server: localhost, request: "GET /mocks HTTP/1.1", host: "localhost"

我不确定要检查什么来确定问题。

以下是您应该检查的选项:

  • 全局外部身份验证
  • 据此:

    默认情况下,控制器将所有请求重定向到现有服务器 如果在中设置了全局身份验证url,则提供身份验证的服务 NGINX配置映射。如果要为此禁用此行为 进入时,可以在NGINX中使用enable global auth:“false” 配置映射。nginx.ingres.kubernetes.io/enable-global-auth:表示 是否应对此应用GlobalExternalAuth配置 入口规则。默认值设置为“真”

  • 服务器名称指示
  • 检查nginx中的
    proxy\u ssl\u server\u name
    设置。它指示HTTPS是否使用SNI,默认设置为false


    请让我知道这是否有帮助。

    FWIW,对于未来的读者-我遇到了同样的问题,在查看我的身份验证服务日志后,注意到nginx Ingres的请求在请求url中附加了一个/_external-auth-xxxxxx路径

    以下是入口控制器在源代码中执行此操作的位置:

    以及如何在我自己的身份验证服务(长生不老药/凤凰路线)中:

    get "/_external-auth*encoded_nginx_auth_url", TokenController, :index