欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

apache的UseCanonicalName

在apache的配备中,UseCanonicalName Off是什么意思啊

最佳答案
  打开这个UseCanonicalName是Web服务器的标准做法,因为客户发送的大部分请求都是对本服务器的引用,这样服务器就能使用ServerName和Port选项的设置内容构建完整的URL,并回应客户,使浏览器能得到规范的URL。如果将这个参数设置为Off,那么Apache将使用从客户请求中获得服务器的名字和端口值(支持HTTP 1.1的客户的请求中将会有这些信息),重新构建URL

来自  https://zhidao.baidu.com/question/326399301651298845.html


今天要做一个302跳转 a站 跳到 c站,跳转是在b站上做的,本来我以为是在a站的 根目录下 代码里直接加的跳转,可是我找了一下 没有,继续找原因:
发现apache有这么一个项:
UseCanonicalName on
大概意思就是说 如果你直接访问某个站点的ip,如果你在httpd.conf里面设置了这个ip的ServerName
那么就直接跳到这个站的目录下访问 。。
所以我a站的dns 我直接指向b的A记录,我在httpd.conf里面设置了b这个站点的ServerName,里面又做了a站过来的跳转

所以 我现在访问a可以302到c了

When set to on, this directive configures the Apache HTTP Server to reference itself using the value specified in the ServerName and Port directives. When UseCanonicalName is set to off, the server instead uses the value used by the requesting client when referring to itself.
UseCanonicalName is set to off by default.

下面是详细解释:
UseCanonicalName指令
语法:UseCanonicalName On | Off | DNS
默认:UseCanonicalName Off
这个指令用来构造Apache的自引用URL(一个指回相同服务器的URL)。

UseCanonicalName .:会将ServerName设置的域名用于所有的自引用URL、SERVER_NAME、CGI中的SERVER_PORT。比如:如果你的web服务器有自己的域名,并且在DNS中有对应的NS记录,而且httpd.conf将ServerName设置了域名,那么你在浏览器中输入http://192.168.120.240/bbs,它会自动将这个IP地址变成其对应的域名,比如http://www.bob.com/bbs/ 。此时,如果其他客户端的电脑不能正确的解析web服务器的这个域名,那么在访问这个web服务器时将会出现问题。因为web服务器会自动将IP地址转变成域名。

UseCanonicalName Off:如果客户端提供了主机名和端口,Apache将会使用客户端提供的这些信息来构建自引用URL。这些值与用于实现基于域名的虚拟主机的值相同,并且对于同样的客户端可用。CGI变量SERVER_NAME和SERVER_PORT也会由客户端提供的值来构建。

UseCanonicalName DNS:本设置用于为大量基于IP的虚拟主机支持那些不提供“Host:“头的浏览器使用。使用这个选项时,Apache将对客户端连入的服务器的IP地址进行DNS反向解析,以构建自引用URL。


来自  https://blog.csdn.net/wjtlht928/article/details/50310937

关于Apache中 ServerName&UseCanonicalName的问题

说明配置服务器如何确定它自己的域名
语法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_NAMESERVER_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

来自 http://blog.sina.com.cn/s/blog_5d97745a01015tx5.html

普通分类: