apache 虚拟主机方式中一种
来源:互联网 发布:注意力缺失症 知乎 编辑:程序博客网 时间:2024/04/30 12:22
转自:http://blog.csdn.net/dong_007_007/article/details/2729263
Apache模块 mod_vhost_alias
概述
本模块通过将HTTP请求中的IP地址和/或"Host:
"头内容转换为所要提供服务的文件路径名来创建动态的虚拟主机配置。这样的做法,使得应用配置大量相似的虚拟主机变得更为容易。
注意
如果使用mod_alias
或mod_userdir
来将URI转换为文件名,那么mod_vhost_alias
的设定将被覆盖。例如,下面的配置将始终把/cgi-bin/script.pl
映射为/usr/local/apache2/cgi-bin/script.pl
。
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
VirtualScriptAlias /never/found/%0/cgi-bin/
目录名称的转换
本模块中的所有指令都用于将字符串替换为路径名。被替换的字符串(以后称为"name")可以是服务器名(参见UseCanonicalName
指令以了解决策方法)或者是"点数字"格式的虚拟主机IP地址。替换操作由printf
格式修饰符控制,该修饰符有以下几种格式:
%%
插入一个百分号(%
)%p
插入虚拟主机的端口号%N.M
插入名称(或者名称的一部分)N
和M
被用来指定name中的子字符串。N
从name中用小数点分隔的某部分中选取,而M
是从N
选中的字符串中选取部分字符。M
是可选的且默认为"0";小数点当且仅当M
存在时才必须书写。替换操作如下:
0
整个name1
第一部分2
第二部分-1
最后一部分-2
倒数第二部分2+
从第二部分开始到最后的所有部分-2+
倒数第二部分以及之前的各部分1+
和-1+
等同于0
如果N
或M
大于部分的个数,则简单的用下划线来替换。
示例
对于一个简单的基于名称的虚拟主机,配置文件中可能会使用下面的指令:
UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/vhosts/%0
那么对http://www.example.com/directory/file.html
的请求将会返回文件/usr/local/apache/vhosts/www.example.com/directory/file.html
对于拥有大量虚拟主机的情况而言,减少vhosts
目录大小的一个好办法就是重新组织。为此你可以使用下面的配置:
UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2
那么对http://www.domain.example.com/directory/file.html
的请求将会返回文件/usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html
进一步的分割可以用name尾字符来索引(hashing),例如:
VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2
该例返回文件/usr/local/apache/vhosts/example.com/n/i/a/domain/directory/file.html
也可以这样使用:
VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+
该例返回文件/usr/local/apache/vhosts/example.com/d/o/m/ain/directory/file.html
对于基于IP地址的虚拟主机,可以这样配置:
UseCanonicalName DNS
VirtualDocumentRootIP /usr/local/apache/vhosts/%1/%2/%3/%4/docs
VirtualScriptAliasIP /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin
对http://www.domain.example.com/directory/file.html
的请求将会返回文件/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html
,这里假设www.domain.example.com
的IP地址为10.20.30.40。对http://www.domain.example.com/cgi-bin/script.pl
的请求将会执行程序/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl
如果你希望在VirtualDocumentRoot
指令中包含点字符(.
),但这又和%
指令产生冲突,可以这样解决:
VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0
对http://www.domain.example.com/directory/file.html
的请求将会返回文件/usr/local/apache/vhosts/domain.example/directory/file.html
LogFormat
指令的%V
和%A
在和本模块的协同中起了一定作用。
VirtualDocumentRoot指令
VirtualDocumentRoot interpolated-directory|none
VirtualDocumentRoot none
VirtualDocumentRoot
指令使Apache可以通过虚拟主机的域名找到相应的文档。扩展interpolated-directory所得到的目录将会作为虚拟主机的根目录,这和DocumentRoot
指令的参数是一样的。如果interpolated-directory为none
,那么VirtualDocumentRoot
将被关闭。该指令不能和VirtualDocumentRootIP
指令在同一作用域中使用。
VirtualDocumentRootIP指令
VirtualDocumentRootIP interpolated-directory|none
VirtualDocumentRootIP none
VirtualDocumentRootIP
与VirtualDocumentRoot
相似,只是替换操作时用的不是虚拟主机名称,而是IP地址。
VirtualScriptAlias 指令
VirtualScriptAlias interpolated-directory|none
VirtualScriptAlias none
VirtualScriptAlias
指令使Apache确定何处存放的是CGI脚本,这和VirtualDocumentRoot
的做法是一样的。它匹配请求中的以/cgi-bin/
开始的URI,更像"ScriptAlias
/cgi-bin/
"的作用。
VirtualScriptAliasIP指令
VirtualScriptAliasIP interpolated-directory|none
VirtualScriptAliasIP none
VirtualScriptAliasIP
和VirtualScriptAlias
相似,只是替换操作使用的不是虚拟主机名称,而是IP地址。
- apache 虚拟主机方式中一种
- apache 虚拟主机方式中一种
- Apache中虚拟主机的配制
- 在Apache中配置虚拟主机
- Apache服务器中设置虚拟主机
- Apache 两种虚拟主机方式的区别
- Apache 两种虚拟主机方式的区别
- Apache 配置虚拟主机三种方式
- Apache 配置虚拟主机三种方式
- Apache 配置虚拟主机三种方式
- apache虚拟主机三种配置方式
- Apache 配置虚拟主机三种方式
- Apache 配置虚拟主机三种方式
- Apache 配置虚拟主机三种方式
- 虚拟主机三种实现方式Apache
- Apache配置虚拟主机的三种方式
- Apache 配置虚拟主机三种方式
- Apache 配置虚拟主机三种方式
- ubuntu中的服务配置工具
- System.map 文件的作用
- Maven 打包时排除不想打包的文件&跳过测试
- 微软面试100题及答案
- oracle 10g中ASM概念以及管理
- apache 虚拟主机方式中一种
- linux下IPCS指令的用法详解
- 用MFC实现WebGUI--(CDHtmlDialog)
- 设计模式之——命令(Command)模式
- Linux中的spinlock和mutex
- C++ 内存 分配 示例
- HTML页面跳转
- TLB和Cache
- SWFUPLOAD的使用(java版)