一、IIS虚拟主机的设置方法
IIS
(以及
Apache
等等其他
Web Server
)都可以做到“虚拟主机”(注意不是“虚拟目录”),也就是一台主机可以对应多个
Web Site
(“网站”)。很多网络服务商
(IDC)
就是使用这样的技术在一台主机上放置多个网站。虚拟主机实现方法有:
1
。同一
IP
和
port
(“端口”),不同
Host Header
(“主机头”);
2
。不同
port
;
3
。不同
IP
。
2
、
3
是对
1
的补充,也就是说在“不同端口”
,
“不同
IP
”下,已经可以实现“一台主机对应多个网站”了,同时结合使用“不同主机头”,又可以实现多个虚拟主机了。
假设要建立
aaa.com
与
bbb.net
两个网站,分别在
D:\aaa.com
和
D:\bbb.net
两个目录下,以上方法的原理和具体做法如下:
1
。同一
IP
和
port
(“端口”),不同
Host Header
(“主机头”):这是最常见的做法。
IIS
支持通过
Host Header
来区分不同的站点请求,也就是说,客户端的浏览器输入
[url]http://aaa.com[/url]
或者
[url]http://bbb.net[/url]
,请求送交
IIS
,也就是
http
报文里面就会包含了
host header
,它的内容就包括客户输入的内容(
aaa.com or bbb.net
),
IIS
读取
host header,
就找到该虚拟站点相应的
home diretory(
主目录
)
,根据
ducument
(默认首文档)的名字寻找相应的文件,把它传递给客户端。这样,就通过不同的
host header
实现了“虚拟主机”的功能。
具体做法是:
在
IIS
里面,添加两个“站点”,描述随便写,主机头分别填写
[url]www.aaa.com[/url]
和
[url]www.bbb.net[/url]
,分别对应不同的主目录,端口最好就是默认的
80
,
IP
就是该主机对外的
IP
;做好要以后检查该站点属性里面的主机头和端口是否正确。这种方法也有一点局限性,就是
IE3.0
以下浏览器不支持
host header
。
2
。不同
port
(“端口”):
这种很简单。建立方法:建立站点,不改变
IP
,改变端口。
缺点:浏览者不知道某站点的端口,就无法访问该站点。
3
。不同
IP
:
假设本机网卡有多个
IP
,或者有多个网卡(也就是有多个
IP
)
,
可以在建立站点以后,选择不同的
IP
来实现不同虚拟主机。
缺点:管理不方便,一般正规服务的服务器也不会有多个合法
IP
,而内部
IP
只能在内部使用。
以上方法,不管怎么作,都需要一个前提,就是
DNS Server
事先已经把域名
aaa.com
和
bbb.net
正向搜索指向该主机的合法
IP
了。否则正确建立了虚拟主机也不能被浏览。如果是在本地作测试的话,本机必须配置
DNS Server
服务,(
Win2k Professional/WinNT Workstation
都不能安装
DNS
);或者局域网内某台
Server
上安装并配置
DNS
,然后测试机的网卡
TCP/IP
需设置
DNS
二、Apache虚拟主机的两种方案
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
设置。
1、基于IP的虚拟主机
这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
网卡上绑定多个IP地址去服务多个虚拟主机。
若该机器的IP地址为192.168.11.2(account.yourdomain.com),首先
你要设置IP别名(假设用192.168.11.4作为其别名IP)。加下面的行到
/etc/rc.d/rc.local,确保每次启动后自动运行。
#/sbin/ifconfig eth0:0 192.168.11.4 netmask 255.255.255.0 broadcast 192.168.11.255 up
#/sbin/route add -host 192.168.11.4 eth0:0
然后你需要设置/etd/httpd/conf/httpd.conf文件:
<VirtualHost 192.168.11.4>
ServerAdmin
[email protected]
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
</VirtualHost>
然后分别创建目录
/home/httpd/sales.yourdomain.com,
/var/log/httpd/sales.yourdomain.com
,放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.11.4 。
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
方案。
2、基于名字的虚拟主机:
它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
/etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.11.2
<VirtualHost 192.168.11.2>
ServerAdmin
[email protected]
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
</VirtualHost>
<VirtualHost 192.168.11.2>
ServerAdmin
[email protected]
DocumentRoot /home/httpd/hr.yourdomain.com
ServerName hr.yourdomain.com
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
TransferLog /var/log/hr.yourdomain.com/access_log
</VirtualHost>
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS都指向IP地址192.168.11.2
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。