Apache虚拟主机配置实验报告
实验目的
本次实验旨在通过配置Apache服务器的虚拟主机功能,实现单个服务器托管多个独立域名或网站,从而提高服务器资源利用率并简化管理流程,通过实践,掌握基于名称和IP的虚拟主机配置方法,验证不同虚拟主机之间的访问隔离性。
实验环境
- 操作系统:Ubuntu 22.04 LTS
- Apache版本:2.4.54
- 实验工具:文本编辑器(vim)、浏览器(Firefox)
- 网络配置:服务器IP地址为192.168.1.100,域名分别为www.example1.com和www.example2.com(本地hosts文件映射)。
实验步骤
安装并启动Apache服务
首先更新系统软件包列表,安装Apache2服务:
sudo apt update sudo apt install apache2
安装完成后,启动服务并设置开机自启:
sudo systemctl start apache2 sudo systemctl enable apache2
创建网站目录及测试文件
为两个虚拟主机分别创建独立的网站根目录,并写入测试文件:
sudo mkdir -p /var/www/example1 sudo mkdir -p /var/www/example2 echo "Welcome to Example1" | sudo tee /var/www/example1/index.html echo "Welcome to Example2" | sudo tee /var/www/example2/index.html
配置虚拟主机文件
Apache的虚拟主机配置文件存放在/etc/apache2/sites-available/目录下,创建两个配置文件example1.conf和example2.conf:
example1.conf:
<VirtualHost *:80>
ServerName www.example1.com
DocumentRoot /var/www/example1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> example2.conf:
<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 启用虚拟主机配置
使用a2ensite命令启用配置文件,并重启Apache服务:
sudo a2ensite example1.conf sudo a2ensite example2.conf sudo systemctl restart apache2
测试虚拟主机访问
在本地客户端的/etc/hosts文件中添加域名映射:
168.1.100 www.example1.com
192.168.1.100 www.example2.com 通过浏览器访问http://www.example1.com和http://www.example2.com,验证是否显示对应的测试内容。
实验结果与分析
实验成功实现了基于名称的虚拟主机配置,通过访问不同域名,浏览器正确返回了对应网站目录下的内容,验证了虚拟主机的隔离性,配置过程中需注意以下几点:
:配置文件中的 ServerName必须与客户端访问的域名完全一致,否则可能访问默认站点。- 目录权限:确保网站目录的Apache用户(
www-data)具有读取权限。 - 模块启用:Apache默认已启用
mod_rewrite等必要模块,如需额外功能需手动启用。
通过本次实验,掌握了Apache虚拟主机的基本配置流程,理解了其工作原理,虚拟主机技术适用于多网站托管场景,可有效降低服务器成本,未来可进一步探索SSL证书配置、基于端口的虚拟主机等高级功能。
FAQs
Q1: 如何解决虚拟主机访问时显示默认站点的问题?
A1: 通常是由于ServerName配置错误或未正确启用虚拟主机配置文件,检查/etc/apache2/sites-enabled/目录下是否存在对应的配置文件链接,并确保ServerName与客户端访问的域名一致,清除浏览器缓存或检查本地hosts文件映射是否正确。
Q2: 如何为虚拟主机启用HTTPS加密访问?
A2: 可通过Let’s Encrypt免费获取SSL证书,并修改虚拟主机配置文件,添加以下内容:
<VirtualHost *:443>
ServerName www.example1.com
DocumentRoot /var/www/example1
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example1.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example1.com/privkey.pem
</VirtualHost> 随后启用ssl模块并重启Apache:sudo a2enmod ssl && sudo systemctl restart apache2。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复