我尝试使用 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
加载中...
9 票,平均:1.00 / 19
5,133
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

2022 年应届毕业生加入 Beyond。目前
在系统解决方案部门
。研究生毕业之前我一直在学习语言学,并接受了成为基础设施工程师的挑战。我
建立了一个名为 Beyond Cafe Club 的内部俱乐部,并且充满热情关于每天煮咖啡和茶。ing