如何在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作为用户名,但您可以使用任何你喜欢的名字。
- sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"
下一步,通过键入为用户名添加一个加密的密码条目。
- sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
你可以对其他用户名重复此过程。通过输入以下命令,你可以查看文件中存储的用户名和加密密码的方式:
- cat /etc/nginx/.htpasswd
Outputsammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
步骤2 – 配置Nginx密码认证
现在你有一个文件,里面包含了用户和密码,并且以Nginx可以读取的格式进行存储,你需要配置Nginx在提供受保护内容之前检查这个文件。
Rocky Linux 9预装的默认文本编辑器是vi。虽然vi是个非常强大的文本编辑器,但对于没有经验的用户来说,它可能有些难以理解。您可能希望安装一个更加用户友好的编辑器,如nano,以便在Rocky Linux 9服务器上轻松编辑配置文件。
- sudo dnf install nano -y
现在你可以使用nano编辑你的Nginx配置文件。
- sudo nano /etc/nginx/nginx.conf
要设置验证,您需要决定要限制的上下文环境。除其他选择外,Nginx可以让您在服务器级别或特定位置内设置限制。
这个例子是针对服务器级别的限制,因此您需要在文件的主服务器{ }块中添加选项。auth_basic指令用于打开身份验证,并显示领域名称以提示用户输入凭据。您将使用auth_basic_user_file指令将Nginx指向您创建的密码文件。
/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
/etc/nginx/nginx.conf
…
服务器 {
监听 80 默认服务器;
. . .
位置 / {
启用文件$ uri $ uri / = 404;
auth_basic “受限内容”;
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
…
在完成后保存并关闭文件。重新启动Nginx以实施您的密码策略。
- sudo systemctl restart nginx
你指定的目录现在应该已被密码保护。
步骤3 — 确认密码验证
为确认您的内容受到保护,请尝试在网络浏览器中访问限制内容。
http://server_domain_or_IP
您应该看到一个用户名和密码提示框:
如果您输入正确的凭据,您将被允许访问内容。如果您输入错误的凭据或点击“取消”,您将看到“需要授权”的错误页面。
结论
你现在应该拥有一切所需来为你的网站设置基本认证。请记住,密码保护应与TLS加密结合使用,以便你的凭据不以明文形式发送到服务器。查看关于如何在Rocky Linux 9上使用Let’s Encrypt来保护Nginx的指南。