|
# 在返回请求的文件名的路径中包含进服务器名字: server name VirtualDocumentRoot /www/hosts/%0/docs VirtualScriptAlias /www/hosts/%0/cgi-bin
将 UseCanonicalName Off 的配置改为 UseCanonicalName DNS 即可实现基于 IP 地址的虚拟主机。而在文件路径中所要插入的服务器名字(server name) 则通过虚拟主机的 IP 地址解析而得。
一个实际的个人主页主机系统
这里对上面的系统作了一点调整,便可作为 ISP 的个人主页服务器。 我们使用了略微复杂的方法,从服务器名字(Server Name)中提取子字符串, 并插入到文件路径中。在这个例子中,www.user.isp.com 的文档将在 /home/user/ 中定位。并对所有虚拟主机使用单个 cgi-bin 目录。
# 所有之前的预备事项和上面一样,然后
# 在文件路径中包含服务器名字(server name) VirtualDocumentRoot /www/hosts/%2/docs
# 单个 cgi-bin 目录 ScriptAlias /cgi-bin/ /www/std-cgi/
更复杂的关于 VirtualDocumentRoot 的设置,可以查阅 mod_vhost_alias 文档。
在同一个服务器上架设多个主机的虚拟系统
更复杂的设置,应该使用 Apache 的 <VirtualHost> 指令来治理各种虚拟主机配置的作用域。例如,你可以用一个 IP 地址来给个人主页客户使用, 同时用下面的配置提供给商业客户使用。自然的,这两者通过运用 <VirtualHost>结合到一起。
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 /www/homepages/%0/docs ScriptAlias /cgi-bin/ /www/std-cgi/
</VirtualHost>
更为有效的基于 IP 地址的虚拟主机
在 第一个例子 中说过,转为基于 IP 地址的虚拟主机设置很轻易做到。但不幸的是,那种做法并不高效,因为这样会在每次处理请求时,需要查询 DNS 。 通过在文件系统中包含IP 地址的做法可以避免这样的问题。这样一来, 免去了和服务器名字的关联,在日志记录中也一样可以用 IP 来分离不同日志。 Apache 将不会为了确定服务器名字(server name)而去做 DNS 查询。
|
| 共2页: 上一页 [1] 2 下一页 |
评论加载中…