这是一个关于在使用HTTP基本身份验证时如何设置NGINX和Certbot的快速教程。
如果您在位置设置如下参数,则会看到 HBA:
基本身份验证 “某个任意名称”; auth_basic_user_file /etc/nginx/path/to/my/password/file;
如果你这样做,访问该网站时会看到类似这样的提示:

您可以使用 httpasswd(一个 Apache 工具——在 Debian 系统中位于 apache2-tools 中)来创建密码文件。
HTTP 基本身份验证是一种非常便捷的方式,可以在您进行网站开发时(或者如果您打算永久保密)锁定网站。许多 Web 应用程序都具有登录/身份验证功能,如果您要管理用户群,显然需要使用专门为此设计的系统。但如果您只是想快速地将网站设置为“仅限本人访问”,或者您不想在身份验证上投入时间和精力,那么 HTTP 基本身份验证就非常合适。
然而,这里有个问题:Certbot 的续期。
Certbot 无法获取您的 HTTP 基本身份验证用户名和密码,因此在进行证书续期(或初始证书配置)时会失败。您可以禁用 HBA,进行证书配置或续期,然后再重新启用它;或者您可以考虑使用其他类型的验证方式,例如 DNS 验证。不过,我将分享一个简单易用的设置方法。在您网站的 NGINX 配置文件中,它看起来是这样的:
位置 /.知名 { 自动索引已开启; root /your/web/root/for/this/site; 基本身份验证关闭; }
这样做会告诉 NGINX,.well-known 目录(Certbot 进行验证的地方)不需要 HTTP 基本身份验证。其他所有地方都会受到保护,但这个目录不会,Certbot 仍然可以正常工作。
我喜欢这种方法,因为它允许我编写脚本来完成整个网站设置:创建 NGINX 配置文件/链接/用户文件,回收 NGINX,运行 certbot,然后网站就可以上线了,所有这些都可以在一个脚本中完成。
享受!