如何给站点或是反向代理站点加锁,需要验证密码才能访问
TIME 2023-06-03 18:46
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
当使用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