网站搜索

如何在 Nginx 中使用密码保护 Web 目录


Web 项目的经理通常需要以某种方式保护他们的工作。人们经常会问如何在其网站仍处于开发阶段时使用密码保护其网站。

在本教程中,我们将向您展示一种简单但有效的技术,如何在将 Nginx 作为 Web 服务器运行时使用密码保护 Web 目录。

如果您使用 Apache Web 服务器,您可以查看我们的 Web 目录密码保护指南:

  1. Apache 中的密码保护 Web 目录

要求

要完成本教程中的步骤,您需要:

  • Nginx 网络服务器已安装
  • 对服务器的 root 访问

第1步:创建用户和密码

1. 要使用密码保护我们的 Web 目录,我们需要创建包含加密的用户名密码的文件。

使用Apache时,您可以使用“htpasswd”实用程序。如果您的系统上安装了该实用程序,则可以使用以下命令生成密码文件:

htpasswd -c /path/to/file/.htpasswd username

运行此命令时,系统会要求您为上述用户设置密码,然后将在指定目录中创建.htpasswd文件。

2.如果您没有安装该工具,您可以手动创建.htpasswd文件。该文件应具有以下语法:

username:encrypted-password:comment

您将使用的用户名取决于您,选择您喜欢的任何名称。

更重要的部分是您为该用户生成密码的方式。

第2步:生成加密密码

3.要生成密码,请使用 Perl 的集成“crypt”函数。

以下是该命令的示例:

perl -le 'print crypt("your-password", "salt-hash")'

一个现实生活中的例子:

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

现在打开一个文件,并将您的用户名和生成的字符串放入其中,并用分号分隔。

具体方法如下:

vi /home/tecmint/.htpasswd

输入您的用户名和密码。就我而言,它看起来像这样:

tecmint:1xV2Rdw7Q6MK.

“Esc”,然后按“:wq”保存文件。

步骤 3:更新 Nginx 配置

4. 现在打开并编辑与您正在处理的站点关联的 Nginx 配置文件。在我们的例子中,我们将使用默认文件:

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

在我们的示例中,我们将密码保护 nginx 的根目录,即:/usr/share/nginx/html

5. 现在在您要保护的路径下添加以下两行部分。

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

现在保存文件并重新启动 Nginx:

systemctl restart nginx
OR
service nginx restart

6. 现在,将该 IP 地址复制/粘贴到浏览器中,系统会要求您输入密码:

就是这样!您的主 Web 目录现已受到保护。当您想要删除网站上的密码保护时,只需删除刚刚添加到 .htpasswd 文件中的两行即可,或者使用以下命令从密码文件中删除添加的用户。

htpasswd -D /path/to/file/.htpasswd username