极其简单:只需一条语句即可处理 NGINX + Certbot + HTTP 基本身份验证! 极其简单:只需一条语句即可处理 NGINX + Certbot + HTTP 基本身份验证!

极其简单:只需一条语句即可处理 NGINX + Certbot + HTTP 基本身份验证!

Certbot这是一个关于在使用HTTP基本身份验证时如何设置NGINX和Certbot的快速教程。

如果您在位置设置如下参数,则会看到 HBA:

       基本身份验证  “某个任意名称”;
       auth_basic_user_file  /etc/nginx/path/to/my/password/file;

如果你这样做,访问该网站时会看到类似这样的提示:

HTTP 基本身份验证

您可以使用 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,然后网站就可以上线了,所有这些都可以在一个脚本中完成。

享受!