如何在Nginx上使用.htpasswd身份验证对目录进行密码保护

如何限制对Nginx上的/ app /目录的访问?

如何在Linux或类似Unix的系统上使用Nginx .htpasswd身份验证为目录设置密码保护?

我们需要在Nginx上保护各种目录或端点。

例如,在我的项目准备运行之前,我经常使用IP地址进行密码保护和限制访问。

本教程介绍了如何在Linux或类似Unix的系统上运行的Nginx Web服务器上用密码保护目录或URL,例如/ app /。

如何使用Nginx身份验证.htpasswd密码保护目录

步骤如下:

  1. 打开终端应用程序
  2. 使用ssh命令登录到服务器(ssh用户@ ec2-cloud-server-ip)
  3. 编辑nginx.conf文件并添加HTTP基本auth配置指令:auth_basic“仅限受限访问”;
  4. 确保已配置.htpasswd文件:auth_basic_user_file /etc/nginx/.htpasswd;
  5. 创建一个新的.htpasswd文件并添加第一个用户名和密码:htpasswd -c /etc/nginx/.htpasswd用户
  6. 重新加载nginx服务器:nginx -s reload

让我们仔细看看在Nginx上设置密码身份验证的所有命令和示例。

步骤1.在Nginx上安装配置密码身份验证所需的依赖项。

您需要安装htpasswd命令。

它不是Nginx Web服务器的一部分。

但这是根据您的Linux / Unix发行版使用HTTP基本身份验证来限制访问所需的依赖项。

因此,输入命令:

Debian/Ubuntu Linux используя apt  ##
sudo apt install apache2-utils
## Fedora/RHEL 8.x используя dnf ##
sudo dnf install httpd-tools
## CentOS/RHEL 7.x используя dnf ##
sudo yum install httpd-tools
## Alpine Linux используя apk ##
sudo apk add apache2-utils

第2步-编辑Nginx配置

编辑/etc/nginx/nginx.conf或虚拟域配置文件,例如www.itsecforu.ru.conf文件:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    auth_basic          "ADMIN Login";
    auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru;
}

现在,保护/ app /目录:

location /app/ {
    auth_basic          "Restricted and Password Protected App";
    auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru;
}

使用htpasswd命令创建新文件/etc/nginx/.htpasswd-itsecforu.ru,如下所示:

# htpasswd -c {/path/to/.htpasswd-file} {userName}
# htpasswd -c /etc/nginx/.htpasswd-itsecforu.ru admin

是否要创建其他用户?

# htpasswd /etc/nginx/.htpasswd-itsecforu.ru user2
# htpasswd /etc/nginx/.htpasswd-itsecforu.ru user3

让我们使用cat命令确保文件包含用户名和加密密码,如下所示:# cat /etc/nginx/.htpasswd-itsecforu.ru

检查服务器是否有错误:

# nginx -t

如果没有错误,请重新加载或重新启动Nginx Web服务器,输入:

# nginx -s reload

第5步-测试设置

在浏览器中,输入URL并确保显示凭据窗口。

密码保护Nginx目录和IP地址限制/ CIDR

我们可以通过结合Nginx HTTP基本身份验证和IP地址限制或CIDR来配置Web服务器的安全性。

编辑Nginx配置文件:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    satisfy all;
    auth_basic          "ADMIN Login";
    auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru;
    allow 202.54.1.2;
    allow 10.8.1.0/24;
    deny all;
}

再次重新启动Nginx Web服务器:

nginx -t && nginx -s reload

您学习了如何在使用Nginx Web服务器时使用HTTP基本身份验证配置和限制访问。

Sidebar