我只想在我的应用程序的特定子路径上禁用基本身份验证。该怎么做?
例如
所有子路径都应经过基本身份验证保护:
/
此路径应为例外且可公开访问:
/#/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>"
答案 0 :(得分:2)
您尝试使用的路径(/#/public
永远不会到达服务器,客户端仅发送/
。这就是为什么您无法禁用身份验证的原因。
符号(#)是URL片段标识符的分隔符。 rfc2396对此进行了说明。
片段标识符的语义是数据的属性 取回操作产生的结果,无论使用哪种URI 在参考
如果尾随Ingress Pod的日志,您将看到到达后端的URL。
需要额外注意的是,如果您需要URL才能到达服务器,则需要对它进行urlencode,/%23/public
,但是含义不同。
关于。