You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure Web App for Containers上的Web应用配置密码保护

Azure Web App for Containers 单固定密码访问保护配置方案

针对仅需单账号固定密码校验、无需搭建复杂用户管理体系的场景,优先选择以下低改造成本的方案,不需要额外部署独立身份服务:


方案1:零镜像修改,通过启动命令前置Basic Auth(推荐,10分钟完成配置)

该方案不需要修改原有业务代码、不需要重新构建容器镜像,直接在Azure门户配置即可生效:

  • 本地生成Basic Auth规范的密码哈希,执行以下命令,将命令里的占位符替换为你要设置的用户名、固定密码,把输出的哈希串复制留存:
    printf "自定义用户名:$(openssl passwd -apr1 你的固定访问密码)\n"
    
  • 进入Azure门户对应Web App的配置页,打开配置 > 常规设置面板,找到「启动命令」输入框,填入以下内容:
    apt update && apt install -y caddy && echo '上一步生成的完整哈希串' > /tmp/.htpasswd && caddy reverse-proxy --from :$PORT --to http://localhost:原有容器内应用的监听端口 --basicauth /* /tmp/.htpasswd
    
    说明:Azure会自动向容器注入$PORT环境变量,不需要手动修改;如果原有应用默认监听80端口,直接把命令里的端口值替换为80即可
  • 保存配置等待应用重启完成,之后访问站点会自动弹出浏览器原生的身份校验框,输入预设的用户名密码即可正常访问,校验失败会直接返回401未授权响应。

    实现逻辑:通过启动命令临时安装轻量反向代理Caddy,所有外部请求先经过Caddy的密码校验,校验通过才会转发到容器内运行的原有业务服务,对业务逻辑完全无侵入。


方案2:调整容器镜像内置认证(适合可自定义构建镜像的场景)

如果你可以重新构建业务容器镜像,直接在容器内的Web服务层配置Basic Auth即可,不需要依赖启动命令装组件:

  • 若用Nginx做反向代理,在对应站点的server配置块中加入以下规则,提前将生成好的htpasswd文件打入镜像或挂载到容器对应路径:
    location / {
        auth_basic "演示站点访问校验";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://127.0.0.1:业务服务监听端口;
    }
    
  • 若业务是Node.js、Python、Java等直接启动的服务,不想额外加Nginx层,直接在服务入口加10行以内的中间件做Basic Auth请求头校验即可,不需要接入任何第三方用户管理SDK。

注意事项

  • 所有配置里不要存储明文密码,统一存储哈希值,避免配置泄露后密码直接被盗用
  • 配置完成后建议用浏览器无痕模式访问测试,避免本地缓存的无认证访问状态导致误判配置失效
  • 后续如果需要取消密码保护,直接把启动命令改回原有容器的默认启动命令、或者移除Web服务里的认证配置即可,可随时回滚

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:39:14