Kubernetes NGINX入口:禁用特定路径的基本身份验证

时间:2019-01-31 06:31:34

标签: nginx kubernetes basic-authentication kubernetes-ingress

我只想在我的应用程序的特定子路径上禁用基本身份验证。该怎么做?

例如

所有子路径都应经过基本身份验证保护:

/ 

此路径应为例外且可公开访问:

/#/public 

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app
  labels:
    app: app
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    ingress.kubernetes.io/auth-type: basic
    ingress.kubernetes.io/auth-secret: basic-auth
    ingress.kubernetes.io/auth-realm:  "Authentication Required"
spec:
  rules:
  - host: "<MYHOST>"
    http:
      paths:
      - path: /
        backend:
          serviceName: app-service
          servicePort: 80
  tls:
    - secretName: "app-secret"
      hosts:
      - "<MYHOST>"

1 个答案:

答案 0 :(得分:2)

您尝试使用的路径(/#/public永远不会到达服务器,客户端仅发送/。这就是为什么您无法禁用身份验证的原因。

符号(#)是URL片段标识符的分隔符。 rfc2396对此进行了说明。

  

片段标识符的语义是数据的属性      取回操作产生的结果,无论使用哪种URI      在参考

如果尾随Ingress Pod的日志,您将看到到达后端的URL。

需要额外注意的是,如果您需要URL才能到达服务器,则需要对它进行urlencode,/%23/public,但是含义不同。

关于。