当前位置:操作系统 > Unix/Linux >>

大容量虚拟主机的动态配置

方法一:简单的动态虚拟主机

  代码:

  这是 httpd.conf 文件中,完成虚拟主机的配置方法,这里采用了 mod_vhost_alias 。

  # 从 Host: 头中取得服务器名字 Server Name

  UseCanonicalName Off

  # 这里的日志格式,可以在将来通过第一个参数域来分隔不同的虚拟主机的日志

  LogFormat "%V %h %l %u %t "%r" %s %b" vcommon

  CustomLog logs/access_log vcommon

  # 在返回请求的文件名的路径中包含进服务器名字: server name

  VirtualDocumentRoot /虚拟主机空间根目录/%0/htdocs

  VirtualScriptAlias /虚拟主机空间根目录/%0/cgi-bin

  #需要首先建立 /%0/htdocs ,然后把文件放在htdocs才可以访问

  #%0表示虚拟主机的Server Name的这个名字,例如www.net.cn

  将 UseCanonicalName Off 的配置改为 UseCanonicalName DNS 即可实现基于 IP 地址的虚拟主机。而在文件路径中所要插入的服务器名字(server name) 则通过虚拟主机的 IP 地址解析而得。

  方法二:多个的动态虚拟主机

  代码:

  UseCanonicalName Off

  LogFormat "%V %h %l %u %t "%r" %s %b" vcommon

  <Directory /www/commercial>

  Options FollowSymLinks

  AllowOverride All

  </Directory>

  <Directory /www/homepages>

  Options FollowSymLinks

  AllowOverride None

  </Directory>

  <VirtualHost 111.22.33.44>

  ServerName www.commercial.isp.com

  CustomLog logs/access_log.commercial vcommon

  VirtualDocumentRoot /www/commercial/%0/docs

  VirtualScriptAlias /www/commercial/%0/cgi-bin

  </VirtualHost>

  <VirtualHost 111.22.33.45>

  ServerName www.homepages.isp.com

  CustomLog logs/access_log.homepages vcommon

  VirtualDocumentRoot /虚拟主机空间根目录/%0/htdocs

  VirtualScriptAlias /虚拟主机空间根目录/%0/cgi-bin

  </VirtualHost>

  方法三:基于 IP 地址的虚拟主机

  代码:

  # 从 IP 地址反解析得到服务器名字(server name)

  UseCanonicalName DNS

  # 在日志中包含 IP 地址,便于后续分发

  LogFormat "%A %h %l %u %t "%r" %s %b" vcommon

  CustomLog logs/access_log vcommon

  # 在文件路径中包含 IP 地址 %0表示IP

  VirtualDocumentRootIP /www/hosts/%0/docs

  VirtualScriptAliasIP /www/hosts/%0/cgi-bin

  

  方法四:使用 mod_rewrite 的虚拟主机系统

  代码:

  RewriteEngine on

  RewriteMap lowercase int:tolower

  # 检查 hostname 正确与否,之后才能使 RewriteRule 起作用

  RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.com$

  # 将虚拟主机名字廉洁到 URI 的开头

  # [C] 表明本次重写的结果将在下一个 rewrite 规则中使用

  RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]

  # 现在创建实际的文件名

  RewriteRule ^www\.([a-z-]+)\.isp\.com/(.*) /home/$1/$2

  

  重头戏

  方法五:使用独立的虚拟主机配置文件

  当你修改vhost.map的时候,不需要重新启动Apache

  代码:

  这样的布局利用了 mod_rewrite 的高级特性, 在独立的虚拟主机配置文件中转换。如此可以更为灵活,但需要较为复杂的设置。

  vhost.map 文件包含了类似下面的内容:

  www.customer-1.com /www/customers/1

  www.customer-2.com /www/customers/2

  #......

  www.customer-N.com /www/customers/N

  http.conf 包含了:

  RewriteEngine on

  RewriteMap lowercase int:tolower

  # 定义映像文件

  RewriteMap vhost txt:/VHOST.map的路径/vhost.map

  # 和上面的例子一样,处理变名

  RewriteCond %{REQUEST_URI} !^/icons/

  RewriteCond %{REQUEST_URI} !^/cgi-bin/

  RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

  # 这里做基于文件的重新映射

  RewriteCond ${vhost:%1} ^(/.*)$

  RewriteRule ^/(.*)$ %1/docs/$1

  RewriteCond %{REQUEST_URI} ^/cgi-bin/

  RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

  RewriteCond ${vhost:%1} ^(/.*)$

  RewriteRule ^/(.*)$ %1/cgi-bin/$1

  

  引用:

  以上内容来自Apache2的"动态配置大型虚拟主机",在这里列出来,是为了方便某些不想看文档的人参考一下子。

  如果你去http://w.yi.org,使用关键字 虚拟主机 搜索一下子,相信会有更多的资料本文来自:http://www.xiaoyaxiao.com/2113.html
发表您的高见!
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,