You need to enable JavaScript to run this app. nginxinc Ingress Controller 配置HTTP基础认证失效,求可运行示例
优惠活动
大模型
产品
解决方案
定价
更多

nginxinc Ingress Controller 配置HTTP基础认证失效,求可运行示例

Nginx Ingress Controller HTTP基础认证可运行配置方案

原配置失效的核心原因

  • 原配置的认证规则仅绑定到/auth子路径,实际你的业务流量全部走/根路径,请求根本不会走到写了认证规则的location块,自然完全不会触发校验逻辑
  • 手动填写的auth_basic_user_file路径是你本地宿主机的目录,Nginx Ingress控制器运行在独立的Pod容器内,和你的宿主机文件系统是完全隔离的,根本访问不到/home/madhu/auth这个文件,就算触发了认证逻辑也加载不到账号信息
  • 没有把认证文件以K8s原生资源的形式接入Ingress体系,硬写本地路径的配置在容器环境下是完全失效的

正确落地步骤

  1. 用htpasswd工具生成本地的加密认证账号文件,存为.htpasswd格式,文件内存储加密后的账号密码对,不要使用明文
  2. 在和Ingress相同的命名空间下,把这个认证文件创建为K8s Secret,执行命令:
    kubectl create secret generic basic-auth --from-file=auth=.htpasswd
  3. 修改Ingress配置,使用Nginx Ingress Controller原生支持的认证注解完成配置,不需要手动硬编码认证文件的挂载路径

可正常运行的完整Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    # 关联存储认证账号的Secret,由控制器自动完成文件挂载与路径配置
    nginx.org/http-basic-auth-secret: "basic-auth"
    # 在服务器块层级配置认证提示文案,对当前域名下所有请求生效
    nginx.org/server-snippets: |
      auth_basic "Administrator’s Area";
spec:
  ingressClassName: nginx
  rules:
  - host: web.mydomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web
            port:
              number: 80

配置生效验证

  • 浏览器访问web.mydomain.com时,会直接弹出基础认证的账号密码输入框,输入提前在htpasswd里配置的账号密码,即可正常访问后端的web服务
  • 输入错误的账号密码时,会直接返回401未授权的响应,符合基础认证的预期行为

内容的提问来源于stack exchange,提问作者mayankchutani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.14 16:15:03