虚拟linux系统:Linux下开发一个虚拟域名系统速成

  大家在使用虚拟域名时都感到十分方便有很多人在想:我要是能让自己服务器也能够实现虚拟域名就好了其实这并不复杂看完了本文你也可以做个虚拟域名系统


  虚拟域名系统关键技术在于:实现Web页面重定向(Redirctory)在本质上虚拟域名系统和虚拟机系统完全区别虚拟机虚拟域名和IP是存在对应关系而虚拟域名系统不需要将域名和IP做映射也就是说它根本不需要复杂域名解析机制和虚拟机来完成它所做事情就是当你在请求yourname.somedo将你浏览器重新定向到你本来存放Html页面地方


  为了介绍说明更完善请看图例:


  我提供是运行环境是:RedHat 5.1 Linux下Apache1.3.6 Web服务器+PHP3语言 在编写的前我们首先要设置好我们服务器首先要让Apache服务器支持php3到ftp.redhat.com下载mod_php-2.0.1-9.i386.rpm安装后修改/etc/httpd/conf/http.conf文件去掉#LoadModule php3_module句前面#注释号同样在/etc/httpd/conf/srm.conf文件里去掉#AddType application/x-httpd-php3 .php3前面注释号同时在DirectoryIndex项后添加index.php3重新启动Apache Server此时服务器就支持标准php3语言脚本文件了并能将index.php3作为默认首页


  设置DNS服务器使其能对泛域名解析Unix和Linux系统DNS解析都是由Bind守护完成Bind4和Bind8配置文件分别/etc/named.boot和name.conf配置时根据你系统修改设置Bind配置文件/etc/named.boot在其中加入“primary do.com db.do添加个新域记录在/etc/name.conf中加入  zone "do.com" {

  type master;

  file "db.do”;

  };


  在/var/name/中新建主域记录文件db.do其格式为:

  N SOA dns.do.com root.do.com (

  199811291 ;Serial

  28800 ;refresh

  7200 ;retry

  604800 ;expire

  86400) ;minimum

  dns

  MX 10 dns.do.com.

  dns A 202.115.135.50

  www A 202.115.135.50

  * A 202.115.135.50


  关键是最后即将整个域可能出现未做标记所有Hostname全部指向同IP 执行/usr/sbin/ndc reload重新加载域名数据库测试此时应该随便ping个do域内主机(除已经标记)都指向了指定IP那么DNS服务器设置完成


  最后步是编制PHP3脚本我们刚才已经在图中详细介绍说明了整个原理所以写个重新定向就不是很难了


  让我们来看个由IE5.0送出完整HTTP头信息:   Accept: application/vnd.ms-excel,

  application/msword,   

  application/vnd.ms-powerpo,

  image/g,

  image/x-xbitmap,

  image/jpeg,

  image/pjpeg, */*

  Accept-Encoding: gzip, deflate

  Accept-Language: zh-cn

  Connection: Keep-Alive

  Host:ww.yahoo.com

  User-Agent: Mozilla/4.0 (compatible; MSIE 5.0b1; Windows 98)


  我们需要在整个HTTP头信息中取出Host信息然后将www.xxx.xxx形式部分“www”即HostName(也即是用户注册name)单独取出作为重定向检索关键字


  检索到用户注册URL信息后我们给用户浏览器送个重定向命令“Localtion: http://somewhere/userinfo.html”将用户重定向到指定页面


  在PHP3中GetAllHeader()取得浏览器送出HTTP头信息我们主要需要使用此来完成整个


  后面附有源由于只是实验性质所以在查询用户信息时没有使用数据库如果整个系统要实际应用定要和数据库挂接起来不然查询用户信息过程将是十分漫长大大影响效率而且用户数据管理也不方便(由于篇幅限制没有给出注册和管理所需写记录请自行添加)


  在源所有用户信息记录在data子目录下user.dat文件中其格式为:


  username:


  http://octopus.cdit.edu.cn/~qap213/index.html


  附PHP3源:

  //Get HTTP’s Header and parse it//

  $headers = getallheaders;

  while (list($header, $value) = each($headers)) {

  ($header"Host"){$username= strtok($value,".");}}

  //Jump out the Banner's Window//

  echo '';

  // seek the user information from the recorded file//


  (!$usrinfo=file("data/user.dat")){echo "Open Data File Error!!";}

  $url="http://";

  for($i=0;$i

  (strtok($usrinfo[$i],":")$username){

  $url=$usrinfo[$i+1];

  }

  ($url"http://"){echo "not found the uesrname of Data!";}

  {

  echo '<meta http-equiv="refresh" content="0;','url=',$url,'">';}

  ?>

Tags:  linux系统 linux系统虚拟机 虚拟机装linux系统 虚拟linux系统

延伸阅读

最新评论

发表评论