两极人生,八度空间

Fight for my CISSP and PMP

首页 新随笔 联系 聚合 管理
  156 Posts :: 22 Stories :: 67 Comments :: 0 Trackbacks
       记得不久以前,我在面试的时候,有考官问我这个问题。当时我只回答了,在Linux下可以通过虚拟主机的方法解决。然而他问在windows平台下如何实现时。说实在话,我的确不太清楚。经查找资料,现将两种平台上解决这个问题的方法详述如下:
(一)在windows平台下,IIS 5.0能很好地支持一个IP地址对应多个独立的域名,这可以通过两种方法来实现:
        ⑴设不同的TCP端口号:你需要分别将各个Web站点的“Web站点”选项中的“TCP端口”指向不同的端口号,再将“主目录”中的路径选不同的目录即可。调用格式如“http://www.abc.com:99”。 ]
        ⑵设不同的主机头名:你需要分别将各个Web站点的“Web站点→高级→编辑”中的“主机头名”一项填入不同的域名(如下图),再将“主目录”中的路径选不同的目录即可。调用格式如“http://www.bbc.com”。


(二)在linux平台下采用虚拟主机的方法实现过程:
         虚拟主机是指采用特殊的软硬件技术,把一台真正的主机分为若干台主机对外提供服务,每一台虚拟主机都可以具有独立的域名和地址,具有完整的互联网服务器(WWW、FTP、Email)等功能。虚拟主机之间完全独立,并可由用户自行管理,可以大大地缓解互联网上IP及服务器等资源的不足,同时降低用户的硬件费用、网络维护费用和通讯服务费用。
        这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 account.yourdomain.com,同时又想为sales部门建立网站,网站内容也放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机设置。
设置Apache虚拟主机通常有两种方案

一、基于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 webmaster@yourdomain.com
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地址,那么你将可以考虑用基于名字的虚拟主机方案。

二、基于名字的虚拟主机:

它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件/etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.11.2
《VirtualHost 192.168.11.2》
ServerAdmin webmaster@yourdomain.com
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 webmaster@yourdomain.com
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地址,将没有太大的区别。

posted on 2007-02-06 13:31 Jerome 阅读(1744) 评论(8)  编辑 收藏 引用 所属分类: Website Technology

Feedback

# re: 多个web站点共享一个外部IP的实现方法 2007-02-07 15:49 现场管理
很另类的文章,收藏了。。。  回复  更多评论
  

# re: 多个web站点共享一个外部IP的实现方法 2007-02-08 12:58 经理人
hao  回复  更多评论
  

# re: 多个web站点共享一个外部IP的实现方法 2007-02-09 21:19 六西格玛
我思想所以我存在  回复  更多评论
  

# re: 多个web站点共享一个外部IP的实现方法 2007-04-14 13:47 游子
真的不错。
不过没有讲在WINDOWS下,用TOMCAT的多域名服务器配置方法。
需要的可以到我的博客里找找:
  回复  更多评论
  

# re: 多个web站点共享一个外部IP的实现方法 2007-06-05 11:37 小红
谢谢了  回复  更多评论
  

只有注册用户登录后才能发表评论。