大容量虚拟主机的动态配置
2006-02-22 15:56
357 查看
方法一:简单的动态虚拟主机
代码:
这是 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
<VirtualHost *:81>
# include the server name in the filenames used to satisfy requests
VirtualDocumentRoot d:/usr/www/html/%2+/web/%1
VirtualScriptAlias d:/usr/www/html/%2+/web/cgi-bin
<Directory "d:/usr/www/html/nicenic.net/web/">
Options +Indexes
</Directory>
#JkMount /*.jsp ajp13
#JkMount /*.do ajp13
#JkMount /servlet/* ajp13
#JkMount /manager/* ajp13
#JkMount /WEB-INF/* ajp13
</VirtualHost>
代码:
这是 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
<VirtualHost *:81>
# include the server name in the filenames used to satisfy requests
VirtualDocumentRoot d:/usr/www/html/%2+/web/%1
VirtualScriptAlias d:/usr/www/html/%2+/web/cgi-bin
<Directory "d:/usr/www/html/nicenic.net/web/">
Options +Indexes
</Directory>
#JkMount /*.jsp ajp13
#JkMount /*.do ajp13
#JkMount /servlet/* ajp13
#JkMount /manager/* ajp13
#JkMount /WEB-INF/* ajp13
</VirtualHost>
相关文章推荐
- apache 动态配置虚拟主机的方法
- phpstudy本地配置虚拟主机教程You don't have permission to access解决
- apache的多站点虚拟主机配置方法
- Apache 301重定向,以及根据主机名配置虚拟主机
- apache配置虚拟主机,为什么总是第一个VirtualHost起效 apache基于域名虚拟主机,只访问第一个的问题
- apache虚拟主机的配置
- Windows下apache中配置虚拟主机
- Apache+Tomcat整合并配置虚拟主机[Windows2003下
- Apache 虚拟主机 VirtualHost 配置
- apache 虚拟主机的配置方法
- 配置Tomcat监听80端口,配置Tomcat虚拟主机,使用zrlog搭建个人博客,Tomcat日志
- 配置nginx的独立虚拟主机文件
- Nginx教程(二) Nginx虚拟主机配置
- 在Apache中配置基于主机名的虚拟主机
- 使用apache配置基于IP地址的虚拟主机
- wamp2.5 配置多端口虚拟主机
- Linux 下Apache虚拟主机的配置
- jboss4.0.4 上配置虚拟主机步骤
- 基于Apache在本地配置多个虚拟主机站点