在太阳下
不管你喜不喜欢,高不高兴,爱与不爱;太阳照旧照耀着你!温暖着你!

如何给站点或是反向代理站点加锁,需要验证密码才能访问

如何给站点或是反向代理站点加锁,需要验证密码才能访问
TIME 2023-06-03 18:46

系统:Debian 11 x64
nginx版本:1.22.0

为了实现给反向代理站点加锁加密码,可以考虑使用 Nginx 的 HTTP 基本认证功能。此时如果用户访问网站需要提供认证信息才能够访问。
需要用到  apache2-utils

检测当前系统是否已安装 apache2-utils

dpkg -s apache2-utils #检测当前系统是否已安装 apache2-utils
dpkg-query: package 'apache2-utils' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files.

根据您的输出,dpkg-query 命令显示 apache2-utils 软件包未安装且没有相关信息。这意味着 apache2-utils 这个软件包不存在于您的系统中。

Debian 11 安装 apache2-utils

apt update ; apt install -y apache2-utils

使用该命令将自动安装 apache2-utils 软件包
安装后检查是否安装完成,检查系统是否已安装 apache2-utils

dpkg -s apache2-utils #检测系统是否已安装 apache2-utils 完成
Package: apache2-utils
Status: install ok installed
Priority: optional
Section: httpd
Installed-Size: 490
Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Architecture: amd64
Multi-Arch: foreign
Source: apache2
Version: 2.4.56-1~deb11u2
Depends: libapr1 (>= 1.4.8-2~), libaprutil1 (>= 1.5.0), libc6 (>= 2.14), libcrypt1 (>= 1:4.1.0), libssl1.1 (>= 1.1.1)
Description: Apache HTTP Server (utility programs for web servers)
 Provides some add-on programs useful for any web server.  These include:
  - ab (Apache benchmark tool)
  - fcgistarter (Start a FastCGI program)
  - logresolve (Resolve IP addresses to hostnames in logfiles)
  - htpasswd (Manipulate basic authentication files)
  - htdigest (Manipulate digest authentication files)
  - htdbm (Manipulate basic authentication files in DBM format, using APR)
  - htcacheclean (Clean up the disk cache)
  - rotatelogs (Periodically stop writing to a logfile and open a new one)
  - split-logfile (Split a single log including multiple vhosts)
  - checkgid (Checks whether the caller can setgid to the specified group)
  - check_forensic (Extract mod_log_forensic output from Apache log files)
  - httxt2dbm (Generate dbm files for use with RewriteMap)
Homepage: https://httpd.apache.org/

根据返回的结果显示:系统已经安装了 apache2-utils 版本号为 2.4.56-1~deb11u2。

创建并编辑用户文件
在 apache2-utils 安装后,需要创建用于存储用户名和密码的文件:
首先创建创建 /etc/nginx 目录(如果不存在),然后创建 .htpasswd 文件并分配所需的权限和所有权,以允许 Nginx Web 服务器正常读取密码文件。

mkdir -p /etc/nginx ; touch /etc/nginx/.htpasswd ; chmod 640 /etc/nginx/.htpasswd ; chown www-data:www-data /etc/nginx/.htpasswd
为什么要将 .htpasswd 文件要存放在 /etc/nginx 目录?
在 Nginx 配置中,用于基本身份验证的密码文件通常存储在 /etc/nginx 目录下。这是因为该目录通常被视为用于存储系统和软件配置文件的标准位置之一,并且也可以很容易地用于存储 Nginx 基本身份验证所需的密码文件。此外,Nginx 配置的默认设置会扫描 /etc/nginx 目录及其子目录中的文件以确定要使用的配置文件。因此,在将密码文件存储在 /etc/nginx 目录下时,配置 Nginx 以使用该文件变得更加简单也更加符合最佳实践。请注意,在处理敏感数据(如密码)时,请确保检查所有目录和文件的权限以确保安全性。密码文件应具有适当的权限,以确保仅允许需要访问它们的用户进行读取和 / 或写入操作。在上面提到的第一个问题中,我们为 .htpasswd 文件设置了适当的权限和所有权以防止意外更改或获取文件内容。如何查看.htpasswd 文件
通常来说文件名以 . 开头,这使得操作系统将其作为隐藏文件进行处理。

要查看.htpasswd 文件,可以使用以下命令

ls -la /etc/nginx

在 .htpasswd 文件里面创建用户名和密码

htpasswd /etc/nginx/.htpasswd newuser   #将“newuser”替换为你的用户名 
New password:                           #设置新的密码 
Re-type new password:                   #再次确认该密码 
Adding password for user newuser        #为“newuser”用户添加密码
该命令会在 .htpasswd 密码文件中创建哈希值及其相关密码,并与相应用户名进行关联,将其用于后续登录验证。
查看 .htpasswd 密码文件中创建用户以及关联性哈希值密码 

cat /etc/nginx/.htpasswd                         #查看 .htpasswd 密码文件中创建用户以及关联性哈希值密码  
newuser:$apr1$koUmYj.h$QHXsefMHt4m1aqC0GdqQn/    #这便是添加的用户名和相对应的加密密码
在虚拟主机的配置文件里面提添加.htpasswd 密码文件关联
在虚拟主机的配置文件 /usr/local/nginx/conf/vhost 目录里面找到相对应的配置文件
这里我们假设拿 inthesun.life.conf 来作为范例
编辑 inthesun.life.conf 配置文件

vi inthesun.life.conf

inthesun.life.conf 配置文件里面,在第一个 { 的后一行,或是在最后一个 } 的上一行添加以下代码,并对齐

auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;

然后检查 Nginx 配置文件语法是否正确,并且重新加载nginx配置

nginx -t ; systemctl reload nginx                                                #检查 Nginx 配置文件语法是否正确,并且重新加载nginx配置
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok      #代码语法正确
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful    #重载成功

然后访问站点,会弹出对话框,提示:

登录
您与此网站的连接不是私密连接
用户名:
密码:

要求输入正确的用户名和密码才允许访问

如果访问输入了正确的用户名和密码以后报错

500 Internal Server Error

nginx

当使用Apache2-utils创建密码文件并启用HTTP基本身份验证时,确保Nginx可以读取和写入/etc/nginx/.htpasswd文件非常重要。如果Nginx无法访问或修改该文件,可能会导致500 Internal Server Error错误。
检查文件权限: 确保/etc/nginx/.htpasswd文件具有适当的权限,以便Nginx可以读取和写入它。您可以使用以下命令更改文件的权限:

sudo chmod 644 /etc/nginx/.htpasswd

运行该段命令后就可以正常访问了,如果不行的话
检查所有者和组:
确保/etc/nginx/.htpasswd文件的所有者和组与Nginx进程所属的用户和组匹配。您可以使用以下命令更改文件的所有者和组:

sudo chown nginx:nginx /etc/nginx/.htpasswd

重新加载Nginx配置:
在对/etc/nginx/.htpasswd文件进行更改后,执行以下命令重新加载Nginx配置:

sudo systemctl reload nginx

通过确保/etc/nginx/.htpasswd文件具有适当的权限和所有者,然后重新加载Nginx配置,应该能够解决500 Internal Server Error错误。

点击数:28

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Verified by MonsterInsights