大家好,我是互联网老辛,这是我参与更文挑战的第21天, 活动详情查看:更文挑战
@[toc]
前言
前面的文章中,我们学习了apache的基本使用,apache的配置文件,在我们之前的学习中,一直使用的是ip作为访问网站的方式, 但事实上我们访问百度,访问其他网站都是访问的域名,而非IP。
今天我们就来聊一聊,虚拟主机的那些事。
一. 什么是虚拟主机
百度百科的定义是这样的:
在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录。一个服务器主机可以运行多个网站,每个网站都是一个虚拟主机。
我们都知道Linux当中一切皆为目录,那么我们访问一个网站,到底访问的是什么? 比如我们搭建好了dz论坛,访问IP或者域名, apache配置文件里指定了路径
上图可以看出,当我们访问bbs.zmkjedu.com的时候,实际上是访问的黄色框里的路径,默认访问index.php
输入网址的时候,也会默认带着index.php
到这里我们就明白了,当我们访问网站的时候,我们其实是访问了一个目录里的文件。
那虚拟主机又是什么意思呢?
简单点说,虚拟主机就是不同的访问目录里的文件。
如图所示当我们访问www.zmkjedu.com和访问bbs.zmkjedu.com的时候,访问的路径不一样,所以访问的文件就不一样。
上图也是在apache的配置文件里面,但是路径不同,访问的是二级域名zh.zmkjedu.com
那么虚拟主机除了基于域名,还有什么样的方式
二. 虚拟主机类型
Apache虚拟主机的实现方式有3种。
- 基于IP的虚拟主机
- 基于端口的虚拟主机
- 基于域名的虚拟主机
三. VirtualHost参数的意义
<VirtualHost *:80> #服务器ip和端口
DocumentRoot "/var/www/html/" #站点目录
ServerName www.cq.com #域名
ServerAlias #给虚拟主机增加多个域名,上面网址的别名
<Directory "/var/www/html"> #对根目录行为的限制
Options FollowSymLinks ExecCGI #followsymlinks表示允许使用符号链接,默认为禁用
AllowOverride None #表示禁止用户对目录配置文件(.htaccess进行修改)重载,普通站点不建议开启
Order allow,deny #是否显示列表 (在发布项目后一般是不启用,对于这个配置,针对DocumentRoot在apachede的默认文件夹外的目录生效。比如下面的例一 )
Allow from all
#Deny from all #拒绝所有的访问
Require all granted
</Directory>
</VirtualHost>
需要注意的是,每次写这个配置的时候,不需要所有的都写,就像我上面的例子一样,只写三行也可以。
四. 虚拟主机实战
1. 基于IP的虚拟主机
将不同的网站挂在不同的IP上,访问不同的IP,所看到的是不同网站.因为一般服务器没那么多公网IP,而且大家一般都是用域名访问的,所以这种情况,我们做实验的时候会用,内网测试的时候会用,公司一般不用
a. 虚拟机原ip
[root@gaosh-1 ~]# ifconfig |grep inet
inet addr:192.168.1.22 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed9:e81/64 Scope:Link
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
[root@gaosh-1 ~]#
b. 添加临时IP
[root@gaosh-1 ~]# ifconfig eth0:0 192.168.1.23
[root@gaosh-1 ~]# ifconfig |grep inet
inet addr:192.168.1.22 Bcast:192.168.1.255 Mask:255.255.255.0
inet addr:192.168.1.23 Bcast:192.168.1.255 Mask:255.255.255.0
c.配置文件中添加虚拟主机
[root@gaosh-1 ~]# vim /etc/httpd/conf/httpd.conf
方便复制版
<VirtualHost 192.168.1.22:80>
DocumentRoot /var/www/html/zmgaosh22
</VirtualHost>
<VirtualHost 192.168.1.23:80>
DocumentRoot /var/www/html/zmgaosh23
</VirtualHost>
[root@gaosh-1 ~]# service httpd restart
d. 创建测试文件进行测试
[root@gaosh-1 ~]# mkdir -p /var/www/html/zmgaosh22
[root@gaosh-1 ~]# mkdir -p /var/www/html/zmgaosh23
[root@gaosh-1 ~]# echo '192.168.1.22 我是高胜寒22' > /var/www/html/zmgaosh22/index.html
[root@gaosh-1 ~]# echo '192.168.1.23 我是高胜寒23' > /var/www/html/zmgaosh23/index.html
[root@gaosh-1 ~]#
测试:
[root@gaosh-1 ~]# elinks -source 192.168.1.22
192.168.1.22 我是高胜寒22
[root@gaosh-1 ~]# elinks -source 192.168.1.23
192.168.1.23 我是高胜寒23
[root@gaosh-1 ~]#
2. 基于端口的虚拟主机
a. 修改配置文件
[root@gaosh-1 ~]# vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 81
<VirtualHost 192.168.1.22:80>
DocumentRoot /var/www/html/zmgaosh22
</VirtualHost>
<VirtualHost 192.168.1.23:81>
DocumentRoot /var/www/html/zmgaosh23
</VirtualHost>
b. 测试
[root@gaosh-1 ~]# service httpd restart
[root@gaosh-1 ~]# elinks -source 192.168.1.22:80
192.168.1.22 我是高胜寒22
[root@gaosh-1 ~]# elinks -source 192.168.1.23:81
192.168.1.23 我是高胜寒23
[root@gaosh-1 ~]#
3. 基于域名的虚拟主机
a. 修改配置文件
<VirtualHost 192.168.1.22:80>
DocumentRoot /var/www/html/zmgaosh22
ServerName www.zmgaosh22.com
</VirtualHost>
<VirtualHost 192.168.1.23:80>
DocumentRoot /var/www/html/zmgaosh23
ServerName www.zmgaosh23.com
b. 修改hosts解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.22 www.zmgaosh22.com
192.168.1.23 www.zmgaosh23.com
c. 测试
[root@gaosh-1 ~]# service httpd restart
[root@gaosh-1 ~]# elinks -source www.zmgaosh22.com
192.168.1.22 我是高胜寒22
[root@gaosh-1 ~]# elinks -source www.zmgaosh23.com
192.168.1.23 我是高胜寒23
[root@gaosh-1 ~]#
总结
虚拟主机在配置基于域名和基于端口的用的比较多,需要熟练掌握。
今天的文章Linux从青铜到王者-apache虚拟主机实战分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15514.html