一、概述
什么是虚拟主机
虚拟主机是指在一台物理服务器上运行多个独立的网站或应用程序,每个虚拟主机在逻辑上独立,拥有自己的域名、文件目录和配置文件,通过共享服务器资源,可以大大降低网站构建及运行成本,提高服务器的利用率。
虚拟主机的类型
基于域名的虚拟主机:每个虚拟主机使用不同的域名,但对应的IP地址相同,这是最常见的类型。
基于IP地址的虚拟主机:每个虚拟主机使用不同的IP地址,这种方式需要服务器配置多个网络接口,因此较少使用。
基于端口的虚拟主机:每个虚拟主机使用不同的TCP端口号,用户在访问时需指定端口号,这种方式也不常用。
二、配置步骤
配置域名
由于申请真实域名比较麻烦,为了便于学习和测试,可以更改操作系统的hosts文件,实现将任意域名解析到指定IP地址,以管理员身份运行命令行工具,输入以下命令打开hosts文件:
C:WINDOWSsystem32driversetchosts
添加如下一行内容:
127、0.0.1 laravel.test
这样,就可以在浏览器上通过http://laravel.test来访问本机的Web服务器。
启用虚拟主机辅配置文件
在Apache的conf/extra目录中有一些辅配置文件,这些文件是httpd.conf的扩展文件,用于将一部分配置抽取出来,以便于修改,打开httpd.conf文件,找到如下所示的一行配置,删除前面的“#”即可启用虚拟主机辅配置文件:
#Include conf/extra/httpdvhosts.conf
配置虚拟主机
打开conf/extra/httpdvhosts.conf文件,可以看到Apache提供的默认配置,默认配置一般用不到,可以直接删除或者全部加上“#”注释起来,然后编写自己的虚拟主机配置,具体如下:
<VirtualHost *:80> DocumentRoot "c:/web/apache2.4/htdocs" ServerName localhost </VirtualHost> <VirtualHost *:80> DocumentRoot "c:/web/www/laravel/public" ServerName laravel.test </VirtualHost> <Directory "c:/web/www"> Options Indexes AllowOverride All Require local </Directory>
上述配置实现了两个虚拟主机,分别是localhost和laravel.test,并且这两个虚拟主机的站点目录指定在不同的路径下,第9~13行用于配置c:/web/www路径的访问权限,第10行用于关闭目录列表功能;第11行用于开启分布式配置文件,开启后会自动读取目录下的.htaccess文件中的配置;第12行用于配置目录访问权限,设为Require local表示只允许本地访问,若允许所有访问,可设为Require all granted,若拒绝所有访问,可设为Require all denied。
编写测试文件
创建C:/web/www/laravel/public目录,并在目录中编写一个内容为“Laravel”的index.html网页,然后重启Apache服务使配置生效,使用浏览器进行访问测试,localhost和laravel.test这两个虚拟主机的页面效果如图18所示。
三、高级配置
基于IP地址的虚拟主机配置
(1)为主机添加多个IP
查看原有IP:
ip addr show dev eth0
添加一个IP:
ip addr add 192.168.137.201/24 dev eth0
(2)添加虚拟主机配置文件
进入配置目录:
cd /etc/httpd/conf.d/
创建一个配置文件,编辑内容如下:
<VirtualHost 192.168.137.200:80> DocumentRoot "/var/www/test200" ServerName www.test200.com </VirtualHost> <VirtualHost 192.168.137.201:80> DocumentRoot "/var/www/test201" ServerName www.test201.com </VirtualHost>
切换目录:
cd /var/www/
创建目录并添加主页:
mkdir test200 test201 echo "Test200" > ./test200/index.html echo "Test201" > ./test201/index.html
(3)测试
重启Apache服务:
service httpd restart
使用elinks进行测试:
elinks source 192.168.137.200 test200 elinks source 192.168.137.201 test201
基于端口的虚拟主机配置
(1)在主配置文件添加监听端口
在原有行Listen 80的基础上,再添加一行Listen 8080:
Listen 80 Listen 8080
(2)添加8080端口虚拟配置
在virtualhost.conf文件中添加以下内容:
<VirtualHost 192.168.137.201:8080> DocumentRoot "/var/www/test2018080" ServerName www.test2018080.com </VirtualHost>
切换目录并创建目录和主页:
cd /var/www/ mkdir test2018080 echo "Test2018080" > ./test2018080/index.html
(3)测试
重启Apache服务:
service httpd restart
使用elinks进行测试:
elinks source 192.168.137.201:8080 test2018080
四、注意事项与最佳实践
安全性设置
确保每个虚拟主机的目录权限设置正确,避免目录遍历等安全问题。
<Directory "/var/www/example1.com/public_html"> Options Indexes AllowOverride All Require local </Directory>
日志管理
为每个虚拟主机配置单独的错误日志和访问日志,以便更好地监控和管理:
ErrorLog "/var/log/httpd/example1.com_error_log" CustomLog "/var/log/httpd/example1.com_access_log" combined
性能优化
通过调整Apache的配置参数,如KeepAlive
、MaxRequestWorkers
等,可以提升服务器的性能和响应速度。
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 10000 </IfModule>
小伙伴们,上文介绍了“怎么配置apache虚拟主机”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1238405.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复