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

介绍

网页应用程序通常提供自己的身份验证和授权方法,但网页服务器本身可以用来限制访问,如果这些是不充分或不可用。

前提条件

要开始,你需要:

要了解如何创建这样的用户,请遵循 Rocky Linux 9 初始服务器设置指南

步骤 1 - 创建密码文件

首先,您需要创建一个包含您的用户名和密码组合的文件,您可以使用已经在您的服务器上可用的OpenSSL实用程序来完成此操作。

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

您可以使用此命令将用户名添加到文件中。‘sammy’在这里被用作用户名,但您可以使用任何您想要的名称:

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

接下来,通过键入用户名添加加加密密码输入:

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

您可以重复此过程以获取额外的用户名,您可以通过键入以下方式查看用户名和加密密码存储在文件中:

1cat /etc/nginx/.htpasswd
1[secondary_label Output]
2sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

步骤 2 – 配置 Nginx 密码验证

现在你有一个文件,你的用户和密码在一个格式, Nginx 可以读取,你需要配置 Nginx 来检查这个文件,在服务你的受保护的内容。

Rocky Linux 9 附带的默认文本编辑器是 vivi 是一个非常强大的文本编辑器,但对于缺乏经验的用户来说,它可能有点杂,您可能想安装一个更易于使用的编辑器,例如 nano,以便在 Rocky Linux 9 服务器上编辑配置文件:

1sudo dnf install nano -y

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

1sudo nano /etc/nginx/nginx.conf

要设置身份验证,您需要决定要限制的背景;在其他选项中, Nginx 允许您在服务器级别或特定位置设置限制。

此示例将用于服务器级别的限制,所以你会将选项添加到文件中的主要服务器{ }块中。auth_basic指令将启用身份验证和一个域名,以显示给用户,当要求身份验证时。

 1[label /etc/nginx/nginx.conf]
 2. . .
 3server {
 4    listen 80 default_server;
 5    listen [::]:80 default_server;
 6    auth_basic "Restricted Content";
 7    auth_basic_user_file /etc/nginx/.htpasswd;
 8     . . .
 9}
10. . .

<$>[注] 注: 根据您将限制放置在哪个区块上,您可以控制网站的哪些部分需要密码的细微性。

 1[label /etc/nginx/nginx.conf]
 2 3server {
 4    listen 80 default_server;
 5
 6     . . .
 7
 8    location / {
 9    try_files $uri $uri/ =404;
10    auth_basic "Restricted Content";
11    auth_basic_user_file /etc/nginx/.htpasswd;
12    }
13}
14

美元

完成后保存并关闭文件. 重新启动 Nginx 以执行您的密码策略:

1sudo systemctl restart nginx

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

步骤 3 – 确认密码身份验证

若要确认您的内容是受保护的,请尝试在 Web 浏览器中访问受限制的内容:

1http://server_domain_or_IP

您应该提供一个用户名和密码提示:

Nginx password prompt

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

Nginx unauthorized error

结论

请记住,密码保护应该与 TLS 加密相结合,以便您的身份证件不会以简单的文本发送到服务器。

Published At
Categories with 技术
comments powered by Disqus