直接用 ngx_http_auth_basic_module 可为缓存清理接口(如 /purge/)添加密码保护,无需后端改动;通过 location ^~ /purge/ 精准匹配路径,配置 auth_basic 和 auth_basic_user_file,并用 htpasswd 生成安全密码文件,权限设为640。

直接用 ngx_http_auth_basic_module 就能给缓存清理接口加一层密码门禁,不依赖后端、不改代码,配置简单见效快。
明确保护目标路径
缓存清理接口通常是类似 /purge/、/cache-flush 或 /api/v1/purge 这样的专用路径。必须精准匹配,避免误锁其他资源。
- 用
location = /purge严格匹配单个 URI(不带参数) - 用
location ^~ /purge/匹配所有以/purge/开头的请求(推荐,兼顾灵活性) - 避免用
location /全局启用,否则整个站点都会弹密码框
配置 auth_basic 指令组合
在对应 location 块中写入两行核心指令:
-
auth_basic "Cache Admin Required";—— 提示文字会显示在浏览器弹窗上,建议写明用途,避免用户误操作 -
auth_basic_user_file /etc/nginx/.purge-auth;—— 密码文件路径,建议独立命名(如.purge-auth),和网站主密码文件分离,便于权限管控
注意:该模块默认已编译进主流 Nginx 发行版,无需额外安装;若报错“unknown directive”,说明当前 Nginx 缺失该模块,需重编译或换发行版。
生成安全的密码文件
不要手写明文密码。使用 htpasswd(来自 httpd-tools)生成加密条目:
- 首次创建并添加用户:
htpasswd -c /etc/nginx/.purge-auth admin(会提示输入密码) - 后续追加用户(去掉
-c):htpasswd /etc/nginx/.purge-auth ops - 密码采用 bcrypt 或 apr1(MD5 变种)更稳妥;避免用 crypt 或 SHA-1 等弱哈希
- 确保
.purge-auth文件权限为640,属主为root:nginx,防止被 Web 进程意外读取泄露
配合缓存清理逻辑做最小侵入
多数缓存清理接口本身是无状态的(如 Nginx 的 proxy_cache_purge 或第三方 purge 插件)。认证只管入口,不影响内部逻辑:
- 如果用的是
location ~ ^/purge(/.*)?$+proxy_cache_purge,auth_basic 放在同一块即可生效 - 若清理动作由后端 API 承担(如调用
/api/purge),则把 auth_basic 放在反向代理的 location 中,而非后端服务自身 - 可搭配
allow/deny作双重防护,例如仅允许运维网段访问再加密码,但注意 IP 规则优先级高于 auth_basic
不需要复杂网关或中间件,几行配置+一个密码文件,就能让清理接口不再裸奔。











