Nginx层面配置基础用户验证的完整步骤

  

下面是“Nginx层面配置基础用户验证的完整步骤”的完整攻略:

步骤一:安装Nginx

如果您还没有安装Nginx,可以在Ubuntu上执行以下命令进行安装:

sudo apt update
sudo apt install nginx

步骤二:创建密码文件

我们需要创建一个包含用户名和密码的文件以进行验证。可以将密码存储在一个文本文件中,格式如下:

username:password

Nginx支持多种密码存储格式,例如plaintext、md5和sha1等。这里我们以plaintext格式为例,使用htpasswd命令生成密码文件。

执行以下命令生成密码文件,并设置一个用户:

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd username

输入密码后,系统将自动生成.htpasswd文件,并将密码信息写入该文件。

步骤三:编辑Nginx配置文件

首先备份默认的Nginx配置文件:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

然后编辑Nginx配置文件,添加以下内容,以启用基础用户验证:

server {
  listen 80;
  server_name example.com;
  root /var/www/html;

  # add basic authentication
  auth_basic "Restricted Access";
  auth_basic_user_file /etc/nginx/.htpasswd;

  location / {
    # proxy_pass http://localhost:3000;
    # proxy_http_version 1.1;
    # proxy_set_header Upgrade $http_upgrade;
    # proxy_set_header Connection 'upgrade';
    # proxy_set_header Host $host;
    # proxy_cache_bypass $http_upgrade;
  }
}

在该配置文件中,我们使用了auth_basic指令启用基础用户验证,并指定了密码文件的路径。此外,我们还需要启用Nginx的HTTP代理功能,将用户请求代理到实际的应用程序服务器。

步骤四:重启Nginx

完成所有配置后,执行以下命令重启Nginx服务:

sudo systemctl restart nginx

完成上述步骤后,用户试图访问example.com时会被要求输入用户名和密码。如果未提供正确的凭据,则无法访问受保护的内容。

示例一:将基础用户验证应用于单个目录

以下示例演示如何将基础用户验证应用于单个目录而不是整个网站。

假设我们有一个名为/var/www/html/secret的目录,并且我们希望利用基础用户验证来保护它。

我们可以在Nginx配置文件中指定以下内容:

server {
  listen 80;
  server_name example.com;
  root /var/www/html;

  location /secret {
    # add basic authentication
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }

  location / {
    # proxy_pass http://localhost:3000;
    # proxy_http_version 1.1;
    # proxy_set_header Upgrade $http_upgrade;
    # proxy_set_header Connection 'upgrade';
    # proxy_set_header Host $host;
    # proxy_cache_bypass $http_upgrade;
  }
}

在该配置文件中,我们将auth_basic指令应用于/secret目录,并在其他区域保持默认设置。

示例二:将基础用户验证应用于多个目录

假设我们有两个目录需要基础用户验证:/var/www/html/secret1/var/www/html/secret2。我们可以在Nginx配置文件中指定以下内容:

server {
  listen 80;
  server_name example.com;
  root /var/www/html;

  location /secret1 {
    # add basic authentication
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }

  location /secret2 {
    # add basic authentication
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }

  location / {
    # proxy_pass http://localhost:3000;
    # proxy_http_version 1.1;
    # proxy_set_header Upgrade $http_upgrade;
    # proxy_set_header Connection 'upgrade';
    # proxy_set_header Host $host;
    # proxy_cache_bypass $http_upgrade;
  }
}

在该配置文件中,我们将auth_basic指令应用于两个目录,并在其他区域保持默认设置。

以上就是“Nginx层面配置基础用户验证的完整步骤”的攻略,希望可以帮助到你。

相关文章