|
|
发表于 2005-12-9 09:08:55
|
显示全部楼层
4.6 可见主机名
希望你不必担心visible_hostname 指令。然而,假如squid 不能发现它所运行的机器的主机名,你就必须设置它。如果发生这样的事,squid 抱怨和拒绝运行:
% squid -Nd1
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'
有大量的理由使squid 需要知道主机名:
+ 主机名出现在squid 的错误消息里,这帮助用户验证潜在问题的源头。
+ 主机名出现在squid 转发的cache 单元的HTTP Via 头里。当请求到达原始主机时,Via头包含了在传输过程中涉及的代理列表。squid 也使用Via 头来检测转发环路。我将在第10章里讨论转发环路。
squid 对特定事务使用内部URL,例如FTP 目录列表的图标。当squid 对FTP 目录产生HTML 页面时,它插入小图标用以指明该目录中的文件类型。图标URL 包含了cache 的主机名,以便web 浏览器能直接从squid 请求它们。
每个从squid 响应的HTTP 回复包含了X-Cache 头。这并非官方HTTP 头。它是一个扩展头,用以指明该响应是cache 点击还是cache 丢失。既然请求和响应可能经过多个cache,每个X-Cache 头包含了cache 报告点击或丢失的名字。如下是一个通过2 个cache 的响应示例:
HTTP/1.0 200 OK
Date: Mon, 29 Sep 2003 22:57:23 GMT
Content-type: text/html
Content-length: 733
X-Cache: HIT from bo2.us.ircache.net
X-Cache: MISS from bo1.us.ircache.net
squid 在启动时试图自动获取主机名。首先它调用gethostname()函数,这通常能返回正确的主机名。接着,squid 调用gethostbyname()函数尝试对主机名进行DNS 查询。该函数典型的返回IP 地址和系统的规范名。假如gethostbyname()成功,squid 在错误消息里,Via 头里等地方使用这个规范名。
因为大量的理由,squid 可能不能检测到它的规范主机名,包括:
+ 主机名可能未设置。
+ 主机名可能从DNS 区域或/etc/hosts 文件里丢失。
squid 系统的DNS 客户端配置可能不正确或丢失。在unix 系统上,你该检查/etc/resolv.conf 和/etc/host.conf 文件。
假如你看到上述的致命错误,你必须修正主机名和DNS 信息,或者显式的给squid 指明主机名。在大多数情况下,请确认"hostname"命令返回一个完全规范的主机名,并且在/etc/hosts 文件里增加这个接口。假如这样不成功,请在squid.conf 里设置可见主机名:
visible_hostname squid.packet-pushers.net
更多信息请参考:http://bbs.chinaunix.net/viewthread.php?tid=571529 |
|