说明 | 配置服务器如何确定它自己的域名 |
---|---|
语法 | UseCanonicalName On|Off|DNS |
默认值 | UseCanonicalName Off |
作用域 | server config, virtual host, directory |
状态 | 核心(C) |
模块 | core |
在很多情况下,Apache必须构造一个自引用URL(即一个指回相同服务器的URL)。使用 UseCanonicalName On
会将ServerName
这个域名用于所有自引用URL、SERVER_NAME
、CGI中的SERVER_PORT
。
设置为 UseCanonicalName Off
时,如果客户端提供了主机名和端口(否则将如上所述使用标准域名),Apache将会使用这些信息来构建自引用URL。这些值与用于实现基于域名的虚拟主机的值相同,并且对于同样的客户端可用。CGI变量SERVER_NAME
和SERVER_PORT
也会由客户端提供的值来构建。
用这样的方式成功解决问题的例子如下:在一个局域网内,您想让连接主机的用户使用诸如www
这样的短域名进行访问。您会注意到,如果用户键入了类似http://www/splat
这样的短域名和目录的URL,并且没有最后的斜线,Apache会将他们重定向到http://www.domain.com/splat/
。如果您在这个目录上启用了身份验证,这会导致用户必须进行两次验证:一次针对www
而另外一次针对www.domain.com
(参见关于此主题的FAQ获得更多信息)。但如果UseCanonicalName
设为 Off
,Apache就会重定向到http://www/splat/
。
第三个可选项是 UseCanonicalName DNS
,用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:
"头的浏览器使用。使用这个选项时,Apache将对客户端连入的服务器的IP地址进行反向DNS查询,以构建自引用URL。
警告
如果CGI对SERVER_NAME
的值作出了假定,它们会被此选项破坏。客户端对于给出它们想要的主机名这样的行动是完全不受限制的。但如果CGI仅使用SERVER_NAME
来构建自引用的URL,它们会工作的很好。
ServerName指定Apache用于识别自身的名字和端口号。
# 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错
#
# 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作。
# 参见UseCanonicalName指令
#
# 如果你的主机没有注册DNS名,在这里键入它的IP地址
# 无论如何,你必须使用它的IP地址来提供服务,
# 这里使用一种容易理解的方式重定向服务
ServerName www.dalouis.com:80
#
# UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。
# 当设置为 “Off”时,Apache会使用用户端提供的主机名和端口号。
# 当设置为“On”,Apache会使用ServerName指令的值。
#
UseCanonicalName Off