我尝试使用 Apache 进行基本身份验证

目录
大家好,我是Ken。这是我第一次写博客,所以非常紧张。也许……我超爱咖啡,几乎每天上班都会自己煮咖啡,而且我还推荐其他Beyond会员喝咖啡!推我们推荐它。
我这次用的是什么
VirtualBox 版本 6.1
Vagrant 版本 2.2.19
Vagrant box: centos/7
Apache 版本 2.4.6
什么是基本身份验证?
首先我们看一下维基百科的解释。
基本身份验证是HTTP协议中定义的一种身份验证方法(HTTP身份验证)。它也被称为基本身份验证
在基本身份验证中,用户名和密码用冒号“:”连接,并以 Base64 编码发送。这种方式的缺点是容易被拦截或篡改,但由于几乎所有 Web 服务器和浏览器都支持它,因此被广泛使用。
为了防止窃听和篡改,后来设计了一种称为摘要式认证的方法,在这种方法中,用户名和密码在发送之前使用 MD5 进行哈希处理。
来源: https (截至2022年8月12日)
哈???你在说什么???维基百科!
简而言之,就是限制对网站的访问,而且只需几行代码就能轻松实现:在登录网站之前,您必须输入用户名和密码,否则您将无法登录。
让我们用 Apache 设置一个虚拟主机并启用基本身份验证!
这次的目标是对安装在 Vagrant 中的 VirtualHost 上设置的公共屏幕应用基本身份验证。
更改 Vagrantfile 设置并登录 Vagrant
编辑 vagrantfile 文件,以在本地环境中启用互联网连接。
以下是一个 Vagrantfile 示例,其中包含以下设置:
您只需要连接即可
config.vm.network "private_network", ip: "192.168.43.20"
具体如下。
# -*- mode: ruby -*- # vi: set ft=ruby : # 所有 Vagrant 配置如下。Vagrant.configure 中的“2”# 配置配置版本(我们支持旧版本以保持向后兼容性)。除非您清楚自己在做什么,否则请勿更改。Vagrant.configure("2") do |config| # 每个 Vagrant 开发环境都需要一个 box。您可以在 https://vagrantcloud.com/search 搜索 box。config.vm.box = "centos/7" # 创建一个端口转发映射,允许从主机上的端口访问虚拟机中的特定端口。在下面的示例中,# 访问“localhost:8080”将访问虚拟机上的 80 端口。 # 注意:这将启用对已打开端口的公共访问。config.vm.network "forwarded_port", guest: 80, host: 8080 # 创建一个私有网络,允许主机使用特定 IP 地址访问虚拟机。config.vm.network "private_network", ip: "192.168.43.20" end
编辑完成后,运行 vagrant up。
流浪汉向上
vagrant up 完成后,使用 vagrant ssh 连接。
vagrant ssh
连接已完成。
安装 Apache 并检查显示情况
首先,请安装 Apache。
sudo yum install httpd
当显示“完成”时,安装即完成。
systemctl status httpd
目前它尚未启动,因此将显示为不活动(已停止)。
● httpd.service - Apache HTTP 服务器 已加载:已加载 (/usr/lib/systemd/system/httpd.service;已禁用;供应商预设:已禁用) 活动:非活动(已停止) 文档:man:httpd(8) man:apachectl(8)
让我们启动 Apache。
sudo systemctl start httpd
再次检查 Apache 状态,确保它已启动。
systemctl status httpd ● httpd.service - Apache HTTP 服务器 已加载:已加载 (/usr/lib/systemd/system/httpd.service;已禁用;供应商预设:已禁用) 活动:活动(正在运行)自 2022 年 8 月 12 日星期五 05:55:17 UTC 起; 4秒前 文档:man:httpd(8) man:apachectl(8) 主进程ID:2443 (httpd) 状态:“正在处理请求...” CGroup:/system.slice/httpd.service tq2443 /usr/sbin/httpd -DFOREGROUND tq2444 /usr/sbin/httpd -DFOREGROUND tq2445 /usr/sbin/httpd -DFOREGROUND tq2446 /usr/sbin/httpd -DFOREGROUND tq2447 /usr/sbin/httpd -DFOREGROUND mq2448 /usr/sbin/httpd -DFOREGROUND
如果显示“active(运行中)”,则表示 Apache 正在运行。
此外,我们还将确认 Apache 测试页面是否显示。
在浏览器中输入 http://localhost:8080,如果出现 Apache 测试屏幕,则说明一切正常。

让我们来设置一个虚拟主机
首先,为虚拟主机创建一个文档根目录。
mkdir -p /var/www/vhosts/example.com/public_html
创建完成后,将其移动到 public_html 目录。
cd /var/www/vhosts/example.com/public_html
创建一个文件,用于在 public_html 目录下显示。
vi index.html
内容可以随意填写。由于这是对 Virtualhost 的测试,请使用以下文本。
这是对基础文档的测试
写完后,使用 :wq 保存并关闭页面。
接下来,为这次创建的虚拟主机创建一个配置文件。
要加载配置文件,需要将其放置在 /etc/httpd/conf.d 目录下,因此请将其移动到 conf 目录下的文件。
cd /etc/httpd/conf.d/
进入 conf 目录后,为 Virtualhost 创建一个 conf 文件。
vi vhost.conf
在 vhost.conf 文件中输入 ServerName 和 DocumentRoot。
<VirtualHost *:80>服务器名称 example.com 文档根目录 /var/www/vhosts/example.com/public_html</VirtualHost>
请重启 Apache 以使设置生效。
systemctl restart httpd
仅此操作无法生效,因此您需要在 Windows 系统中进行本地配置。为此,请编辑 hosts 文件。hosts 文件位于以下目录中:
C:\Windows\System32\drivers\etc\hosts
将此路径输入资源管理器,以管理员权限在记事本中打开 hosts 文件,并添加以下内容:
192.168.43.20 example.com
添加并保存。
之后,如果设置正确,当您在浏览器中输入 http://example.com 时,将显示 index.html 中指定的网站。

如果看到此消息,则表示虚拟主机已成功配置。
接下来,我们将为该虚拟主机配置基本身份验证。
让我们设置基本身份验证。
本次将使用基本身份验证的网站是:
/var/www/vhosts/example.com/public_html
因此,我们将进行设置,使基本身份验证仅应用于上述路径中的站点。
sudo htpasswd -c /var/www/vhosts/example.com/.htpasswd 用户名
设置您选择的用户名和密码。输入上述命令后,系统会提示您输入密码,请设置密码。系统会要求您输入两次密码以进行确认,请输入两次您想要设置的密码。完成后,输入 cat 命令检查用户名和密码是否已设置。
cat /var/www/vhosts/example.com/.htpasswd
输出结果显示了用户名和哈希密码,因此我可以确认配置是正确的。
vagrant:$apr1$5XrvFjtv$45oq4gzLiu708WtVYuOtq0
现在我们已经更改了权限设置,接下来将配置基本身份验证。这次,我们将使用 .htaccess 文件来实现基本身份验证。
在文档根目录下创建 .htaccess 文件。
sudo vi /var/www/vhosts/example.com/public_html/.htaccess
然后,将基本身份验证设置输入到 .htaccess 文件中。
AuthType Basic AuthName basic auth test AuthUserFile /var/www/vhosts/example.com/.htpasswd require valid-user
写完后,按 :wq 保存。
由于 Apache 默认不允许使用 .htaccess 设置,我们将对其进行配置以允许使用。
具体来说,我们将向 vhost.conf 文件中添加以下设置,以便为 /var/www/vhosts/example.com/public_html 配置基本身份验证。要添加的设置如下:
<VirtualHost *:80>服务器名称 example.com 文档根目录 /var/www/vhosts/example.com/public_html<Directory /var/www/vhosts/example.com/public_html> AllowOverride AuthConfig</Directory></VirtualHost>
首先,要决定将设置反映在哪个目录中,<Directory /var/www/vhosts/example.com/public_html></Directory>通过将 AllowOverride 设置为 AuthConfig,您可以启用基本身份验证等设置。更改后,请重启系统以使更改生效。
sudo systemctl restart httpd
设置现在应该已经生效,请再次搜索 http://example.com 以检查显示效果。

基本身份验证图片显示了!!!为了确保万无一失,我又输入了之前设置的用户名和密码,index.html 中的图片也正确显示了!!!

概括
设置基本身份验证时,如果设置完成后没有立即生效,你可能会感到沮丧。但我明白了不要慌张,而是应该上网搜索和查找资料。到目前为止,我主要学习的是 Apache,但从现在开始,我想在我的博客上写一些关于如何为 nginx 设置基本身份验证的文章。
我刚刚预览了下一篇博客的主题,感谢阅读。祝您度过一个美好的夏天!
9