众所周知,一台物理服务器只能运行一个站点,但虚拟主机的的实现可以让一台物理
主机运行多个站点,具有很大的实用价值
实现虚拟主机有三种不同的方式:
基于IP的虚拟主机:使用不同的IP地址提供不同的站点
基于端口的虚拟主机:使用不同的端口提供不同的站点
基于主机头的虚拟主机:使用不同的主机名提供不同的站点
下面让这三种方式分别给予实现:
实现平台为apache-2.4.3;其实现的服务httpd监听端口为80端口
实现虚拟主机先注释掉主配置文件/etc/httpd/conf/httpd.conf中的中心主机项:
- #DocumentRoot "/var/www/html"
1、基于IP的虚拟主机实现:
本机的ip地址为172.16.14.1;还需要再添加一个IP地址
- # ifconfig eth0:0 172.16.14.2/16
在主配置文件:/etc/httpd/conf/httpd.conf;添加如下内容:
- <VirtualHost 172.16.14.1:80>
- DocumentRoot "/web/site1"
- ServerName 172.16.14.1
- </VirtualHost>
- <VirtualHost 172.16.14.2:80>
- DocumentRoot "/web/site2"
- ServerName 172.16.14.2
- </VirtualHost>
在上面添加了两个站点site1,site2,
为其创建两个目录:
- # mkdir -pv /web/{site1,site2}
为站点1提供网页:
- # vim /web/site1/index.html 添加如下内容:
- <html>
- <title>site1</title>
- <h1>www.magedu.com</h1>
- </html>
为站点2提供网页:
- # vim /web/site2/index.html 添加如下内容:
- <html>
- <title>site2</title>
- <h1>www2.magedu.com</h1>
- </html>
检查语法:
- # httpd -t
重启服务:
- # service httpd restart
测试网页结果:站点1:
站点2::
2、基于端口的虚拟主机实现
在配置文件/etc/httpd/conf/httpd.conf添加8080监听端口
- Listen 80
- Listen 8080
设置主配置文件:/etc/httpd/conf/httpd.conf
- <VirtualHost 172.16.14.1:80>
- DocumentRoot "/web/site1"
- ServerName 172.16.14.1
- </VirtualHost>
- <VirtualHost 172.16.14.1:8080>
- DocumentRoot "/web/site2"
- ServerName 172.16.14.2
- </VirtualHost>
重启服务:
刷新页面显示:
80端口页面为:
8080端口:
3、同时使用IP和端口的虚拟主机实现
添加第三个站点:
- <VirtualHost 172.16.14.2:80>
- DocumentRoot "/web/site3"
- ServerName 172.16.14.2
- </VirtualHost>
为第三个站点设置目录和添加页面内容:
- # mkdir -pv /web/site3
- # vim /web/site3/index.html
- <html>
- <title>site3</title>
- <h1>www3.magedu.com</h1>
- </html>
重启服务:
- # service httpd restart
第三个站点显示页面:
4、基于IP和端口的虚拟主机不常用,常用的是基于域名的虚拟主机基于域名的
虚拟主机的IP和端口是一样的,不同之处是ServerName.
<VirtualHost>容器就是基于ServerName来判定虚拟主机是相对于哪一个站点来访问的.
而基于域名的虚拟主机在apache2.2以后必须要启用配置文件中的NameVirtualHost *:80
- NameVirtualHost www.magedu.com:80
在本机进行域名解析测试:
- # vim /etc/hosts 添加:
- 172.16.14.1 www.magedu.com www
- 172.16.14.1 www2.magedu.com www2
重启服务,测试结果:
以上就是用apache实现不同的虚拟主机过程,根据实际需要,在容器中可添加相关的应用:
- <VirtualHost *:80>
- ServerAdmin
- DocumentRoot ##网页文件路径
- ServerName ##主机名
- ErrorLog logs/ ##定义网站的错误日志
- CustomLog logs/ ##定义网站的访问日志
- #</VirtualHost>
转载于:https://blog.51cto.com/51880526/1057314