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

Kubernetes NGINX入口:禁用特定路径的基本身份验证,nginx,kubernetes,basic-authentication,kubernetes-ingress,Nginx,Kubernetes,Basic Authentication,Kubernetes Ingress,我只想在我的应用程序的特定子路径上禁用基本身份验证。如何做到这一点 e、 g 所有子路径都应该是基本身份验证安全的: / /#/public 此路径应为例外且可公开访问: / /#/public 亚马尔酒店 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: app labels: app: app annotations: kubernetes.io/ingress.class:

我只想在我的应用程序的特定子路径上禁用基本身份验证。如何做到这一点

e、 g

所有子路径都应该是基本身份验证安全的:

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

/ 
/#/public 
亚马尔酒店

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>"
apiVersion:extensions/v1beta1
种类:入口
元数据:
名称:应用
标签:
app:app
注释:
kubernetes.io/ingres.class:nginx
kubernetes.io/tls-acme:“正确”
ingress.kubernetes.io/auth-type:basic
ingress.kubernetes.io/auth-secret:basic auth
ingress.kubernetes.io/auth-realm:“需要身份验证”
规格:
规则:
-主持人:“
http:
路径:
-路径:/
后端:
服务名称:应用服务
服务端口:80
tls:
-secretName:“应用程序机密”
主持人:
- ""

您尝试使用的路径(
/#/public
)从未到达服务器,客户端只发送
/
。这就是您无法禁用反身份验证的原因

符号(#)是URL片段标识符的分隔符。这就是原因

片段标识符的语义是数据的一个属性 由检索操作生成,而与所使用的URI类型无关 在参考中

如果跟踪入口吊舱的日志,您将看到到达后端的url

另一个注意事项是,如果您需要url到达服务器,那么您需要对其进行url编码,
/%23/public
,但是,它具有不同的含义


问候

您尝试使用的路径(
/#/public
)从未到达服务器,客户端只发送
/
。这就是您无法禁用反身份验证的原因

符号(#)是URL片段标识符的分隔符。这就是原因

片段标识符的语义是数据的一个属性 由检索操作生成,而与所使用的URI类型无关 在参考中

如果跟踪入口吊舱的日志,您将看到到达后端的url

另一个注意事项是,如果您需要url到达服务器,那么您需要对其进行url编码,
/%23/public
,但是,它具有不同的含义


问候

谢谢你的解释,但是如果它只是应用程序的一个子路径,我该如何禁用它呢。e、 g./public?您可以尝试创建另一个入口定义,在不使用身份验证注释的情况下捕获路径。并且/#/public将被应用程序替换?例如:将调用:/addUser/public,因为请求内容是关于添加用户的?我会读到的。谢谢。嗨@TimSchwalbe我也有同样的问题,这是我的问题的答案,你能看看你是否能从你的经验中得到帮助吗?对不起,没有解决。但您可以尝试这样做:nginx.ingres.kubernetes.io/server-snippet:|location~*/[^/]+/public{auth_basic“off”;include/etc/nginx/uwsgi_params;uwsgi_pass unix:/tmp/app.sock;},但确实不确定它是否能工作@是关于招摇过市吗?谢谢你的解释,但是如果它只是应用程序的一个子路径,我怎么禁用它呢。e、 g./public?您可以尝试创建另一个入口定义,在不使用身份验证注释的情况下捕获路径。并且/#/public将被应用程序替换?例如:将调用:/addUser/public,因为请求内容是关于添加用户的?我会读到的。谢谢。嗨@TimSchwalbe我也有同样的问题,这是我的问题的答案,你能看看你是否能从你的经验中得到帮助吗?对不起,没有解决。但您可以尝试这样做:nginx.ingres.kubernetes.io/server-snippet:|location~*/[^/]+/public{auth_basic“off”;include/etc/nginx/uwsgi_params;uwsgi_pass unix:/tmp/app.sock;},但确实不确定它是否能工作@那是关于招摇过市吗?