众所周知,一台物理服务器只能运行一个站点,但虚拟主机的的实现可以让一台物理
- #DocumentRoot "/var/www/html"
- # ifconfig eth0:0 172.16.14.2/16
- <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>
- # mkdir -pv /web/{site1,site2}
- # vim /web/site1/index.html 添加如下内容:
- <html>
- <title>site1</title>
- <h1>www.magedu.com</h1>
- </html>
- # vim /web/site2/index.html 添加如下内容:
- <html>
- <title>site2</title>
- <h1>www2.magedu.com</h1>
- </html>
- # httpd -t
- # service httpd restart
- Listen 80
- Listen 8080
- <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>
8080端口:
- <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
重启服务,测试结果:
- <VirtualHost *:80>
- ServerAdmin
- DocumentRoot ##网页文件路径
- ServerName ##主机名
- ErrorLog logs/ ##定义网站的错误日志
- CustomLog logs/ ##定义网站的访问日志
- #</VirtualHost>