首页 > 解决方案 > NGINX 入口 auth-url 返回 404 但端点存在

问题描述

添加注释:

  annotations:
    nginx.ingress.kubernetes.io/auth-url: http://my-auth-service.my-api.svc.cluster.local:8080

...我的入口规则导致入口控制器的 500 响应(入口在没有它的情况下工作)。

该服务存在,我可以 ssh 进入入口控制器并 CURL 它,得到响应:

curl http://my-auth-service.my-api.svc.cluster.local:8080产生 200 响应。

我检查了入口控制器日志,但它说服务返回了一个404. 如果我可以 CURL 到同一个 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"

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

标签: kubernetesdocker-for-windowsnginx-ingressdocker

解决方案


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

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

https://github.com/kubernetes/ingress-nginx/blob/master/internal/ingress/controller/template/template.go#L428

以及我如何在自己的身份验证服务(Elixir/Phoenix 路线)中处理它:

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

推荐阅读