如何在Rocky Linux 9上使用Nginx设置密码验证

简介

在设置网站服务器时,通常会有一些你希望限制访问的部分。网络应用程序通常提供自己的身份验证和授权方法,但如果这些方法不足或不可用,可以使用网站服务器本身来限制访问。在本指南中,你将在运行Rocky Linux 9的Nginx网站服务器上对资源进行密码保护。

先决条件

开始之前,你需要以下物品:

  • Access to an Rocky Linux 9 server environment with a non-root user with sudo privileges in order to perform administrative tasks. To learn how to create such a user, follow the Rocky Linux 9 initial server setup guide.
  • Nginx installed on your system, following Steps 1 and 2 of this guide on how to install Nginx on Rocky Linux 9.

第一步 – 创建密码文件

首先,您需要创建一个文件来存储您的用户名和密码组合。您可以通过使用应该已经可用于您的服务器的OpenSSL工具来实现这一点。

如果您的服务器上安装了OpenSSL,您可以创建一个不需要额外软件包的密码文件。您将在/etc/nginx配置目录下创建一个名为.htpasswd的隐藏文件来存储您的用户名和密码组合。

使用该命令,您可以为文件添加一个用户名。这里使用的是sammy作为用户名,但您可以使用任何你喜欢的名字。

  1. sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"

下一步,通过键入为用户名添加一个加密的密码条目。

  1. sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

你可以对其他用户名重复此过程。通过输入以下命令,你可以查看文件中存储的用户名和加密密码的方式:

  1. cat /etc/nginx/.htpasswd
Output
sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

步骤2 – 配置Nginx密码认证

现在你有一个文件,里面包含了用户和密码,并且以Nginx可以读取的格式进行存储,你需要配置Nginx在提供受保护内容之前检查这个文件。

Rocky Linux 9预装的默认文本编辑器是vi。虽然vi是个非常强大的文本编辑器,但对于没有经验的用户来说,它可能有些难以理解。您可能希望安装一个更加用户友好的编辑器,如nano,以便在Rocky Linux 9服务器上轻松编辑配置文件。

  1. sudo dnf install nano -y

现在你可以使用nano编辑你的Nginx配置文件。

  1. sudo nano /etc/nginx/nginx.conf

要设置验证,您需要决定要限制的上下文环境。除其他选择外,Nginx可以让您在服务器级别或特定位置内设置限制。

这个例子是针对服务器级别的限制,因此您需要在文件的主服务器{ }块中添加选项。auth_basic指令用于打开身份验证,并显示领域名称以提示用户输入凭据。您将使用auth_basic_user_file指令将Nginx指向您创建的密码文件。

/etc/nginx/nginx.conf ->

/etc/nginx/nginx.conf文件

. . .
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
     . . .
}
. . .

Note

注意:根据您在哪个块中设置限制,您可以控制您站点的哪些部分需要密码的粒度。 这个替代示例只限制了文档根目录,您甚至可以修改此列表,以仅针对Web空间中的特定目录:
/etc/nginx/nginx.conf

服务器 {
监听 80 默认服务器;

. . .

位置 / {
启用文件$ uri $ uri / = 404;
auth_basic “受限内容”;
auth_basic_user_file /etc/nginx/.htpasswd;
}
}

在完成后保存并关闭文件。重新启动Nginx以实施您的密码策略。

  1. sudo systemctl restart nginx

你指定的目录现在应该已被密码保护。

步骤3 — 确认密码验证

为确认您的内容受到保护,请尝试在网络浏览器中访问限制内容。

http://server_domain_or_IP

您应该看到一个用户名和密码提示框:

Nginx password prompt

如果您输入正确的凭据,您将被允许访问内容。如果您输入错误的凭据或点击“取消”,您将看到“需要授权”的错误页面。

Nginx unauthorized error

结论

你现在应该拥有一切所需来为你的网站设置基本认证。请记住,密码保护应与TLS加密结合使用,以便你的凭据不以明文形式发送到服务器。查看关于如何在Rocky Linux 9上使用Let’s Encrypt来保护Nginx的指南。

发表回复 0

Your email address will not be published. Required fields are marked *