译者序:
本人在工作中维护着数台Squid服务器,多次参阅Duane Wessels(他也是Squid的创始人)的这本书,原书名是"Squid: The Definitive Guide",由O'Reilly出版。我在业余时间把它翻译成中文,希望对中文Squid用户有所帮助。对普通的单位上网用户,Squid可充当代理服务器;而对Sina,NetEase这样的大型站点,Squid又充当WEB加速器。这两个角色它都扮演得异常优秀。窗外繁星点点,开源的世界亦如这星空般美丽,而Squid是其中耀眼的一颗星。
对本译版有任何问题,请跟我联系,我的Email是:yonghua_peng@yahoo.com.cn
彭勇华
目 录
* 第1章 介绍
o 1.1 Web缓存
o 1.2 Squid的简明历史
o 1.3 硬件和操作系统要求
o 1.4 squid是开源的
o 1.5 Squid的Web主页
o 1.6 获取帮助
+ 1.6.1 FAQ
+ 1.6.2 邮件列表
+ 1.6.3 职业支持
o 1.7 启动Squid
* 第2章 获取Squid
o 2.1 版本和发布
o 2.2 使用源代码
o 2.3 预编译的二进制文件
o 2.4 匿名CVS
o 2.5 devel.squid-cache.org
* 第3章 编译和安装
o 3.1 安装之前
o 3.2 解开源代码包
o 3.3 调整内核
+ 3.3.1 文件描述符
+ 3.3.2 Mbuf Clusters
+ 3.3.3 临时端口范围
o 3.4 Configure脚本
+ 3.4.1 configure选项
+ 3.4.2 运行configure
o 3.5 编译
o 3.6 安装
o 3.7 打补丁
o 3.8 重运行configure
* 第4章 快速配置向导
o 4.1 squid.conf语法
o 4.2 User ID
o 4.3 端口号
o 4.4 日志文件路径
o 4.5 访问控制
o 4.6 可见主机名
o 4.7 管理联系信息
o 4.8 下一步
* 第5章 运行Squid
o 5.1 squid命令行选项
o 5.2 对配置文件查错
o 5.3 初始化cache目录
o 5.4 在终端窗口里测试squid
o 5.5 将squid作为服务进程运行
+ 5.5.1 squid_start脚本
o 5.6 启动脚本
+ 5.6.1 /etc/rc.local
+ 5.6.2 init.d和rc.d
+ 5.6.3 /etc/inittab
o 5.7 chroot环境
o 5.8 停止squid
o 5.9 重配置运行中的squid进程
o 5.10 滚动日志文件
* 6.访问控制
o 6.1 访问控制元素
+ 6.1.1 一些基本的ACL类型
+ 6.1.2 ACL类型
+ 6.1.3 外部ACL
+ 6.1.4 处理长ACL列表
+ 6.1.5 Squid如何匹配访问控制元素
o 6.2 访问控制规则
+ 6.2.1 访问规则语法
+ 6.2.2 Squid如何匹配访问规则
+ 6.2.3 访问列表风格
+ 6.2.4 延时检查
+ 6.2.5 减缓和加速规则检查
o 6.3 常见用法
+ 6.3.1 仅仅允许本地客户
+ 6.3.2 阻止恶意客户
+ 6.3.3 内容过滤
+ 6.3.4 在工作时间的受限使用
+ 6.3.5 阻止squid与非HTTP服务器会话
+ 6.3.6 授予某些用户特殊的访问
+ 6.3.7 阻止邻近cache的滥用
+ 6.3.8 使用IP地址拒绝请求
+ 6.3.9 http_reply_access示例
+ 6.3.10 阻止对本地站点的cache命中
o 6.4 测试访问控制
* 7.磁盘缓存基础
o 7.1 cache_dir指令
+ 7.1.1 参数:Scheme
+ 7.1.2 参数:Directory
+ 7.1.3 参数:Size
+ 7.1.4 参数:L1和L2
+ 7.1.5 参数:Options
o 7.2 磁盘空间基准
o 7.3 对象大小限制
o 7.4 分配对象到缓存目录
o 7.5 置换策略
o 7.6 删除缓存对象
+ 7.6.1 删除个别对象
+ 7.6.2 删除一组对象
+ 7.6.3 删除所有对象
o 7.7 refresh_pattern
* 第8章 高级磁盘缓存主题
o 8.1 是否存在磁盘I/O瓶颈?
o 8.2 文件系统调整选项
o 8.3 可选择的文件系统
o 8.4 aufs存储机制
+ 8.4.1 aufs如何工作
+ 8.4.2 aufs发行
+ 8.4.3 监视aufs操作
o 8.5 diskd存储机制
+ 8.5.1 diskd如何工作
+ 8.5.2 编译和配置diskd
+ 8.5.3 监视diskd
o 8.6 coss存储机制
+ 8.6.1 coss如何工作
+ 8.6.2 编译和配置coss
+ 8.6.3 coss发行
o 8.7 null存储机制
o 8.8 哪种最适合我?
* 第9章 Cache拦截
o 9.1它如何工作?
o 9.2为何要(或不要)拦截?
o 9.3 网络设备
+ 9.3.1 内置Squid
+ 9.3.2 四层交换
+ 9.3.3 Cisco策略路由
+ 9.3.4 Web Cache Coordination协议
o 9.4 操作系统配置
+ 9.4.1 Linux
+ 9.4.2 FreeBSD
+ 9.4.3 OpenBSD
+ 9.4.4 在NetBSD和其他系统上的IPFilter
o 9.5 配置Squid
+ 9.5.1 配置WCCPv1
o 9.6 调试问题
* 第10章 与其他Squid会话
o 10.1 某些术语
o 10.2 为何要(或不要)使用堆叠?
o 10.3 配置Squid与邻居通信
+ 10.3.1 cache_peer选项
+ 10.3.2 邻居状态
+ 10.3.3 改变关系
o 10.4 对邻居的请求限制
+ 10.4.1 cache_peer_access
+ 10.4.2 cache_peer_domain
+ 10.4.3 never_direct
+ 10.4.4 always_direct
+ 10.4.5 hierarchy_stoplist
+ 10.4.6 nonhierarchical_direct
+ 10.4.7 prefer_direct
o 10.5 网络度量数据库(netdb)
o 10.6 Internet Cache协议(ICP)
+ 10.6.1 成为ICP服务器
+ 10.6.2 成为ICP客户
+ 10.6.3 广播ICP
o 10.7 Cache摘要(Cache Digest)
+ 10.7.1 配置squid的cache摘要
o 10.8 超文本cache协议(HTCP)
+ 10.8.1 配置Squid使用HTCP
o 10.9 Cache数组路由协议(CARP)
+ 10.9.1 配置Squid使用CARP
o 10.10 归纳所有
+ 10.10.1 步骤1:直接决定选项
+ 10.10.2 步骤2:邻居选择协议
+ 10.10.3 步骤2a:ICP/HTCP应答处理
+ 10.10.4 步骤3:从父cache选择
+ 10.10.5 重试
o 10.11 该怎么做?
+ 10.11.1 通过另外的代理发送所有请求?
+ 10.11.2 通过另外的代理发送所有请求,除非它down了?
+ 10.11.3 确认squid对某些请求,不使用邻居cache吗?
+ 10.11.4 通过父cache发送某些请求来绕过本地过滤器?
* 第11章 重定向器
o 11.1 重定向器接口
+ 11.1.1 处理包含空格的URI
+ 11.1.2 产生HTTP重定向消息
o 11.2 重定向器示例
o 11.3 重定向器池
o 11.4 配置Squid
+ 11.4.1 redirect_program
+ 11.4.2 redirect_children
+ 11.4.3 redirect_rewrites_host_header
+ 11.4.4 redirector_access
+ 11.4.5 redirector_bypass
o 11.5 流行的重定向器
+ 11.5.1 Squirm
+ 11.5.2 Jesred
+ 11.5.3 squidGuard
+ 11.5.4 AdZapper
* 第12章 验证辅助器
o 12.1 配置Squid
o 12.2 HTTP基本验证
+ 12.2.1 NCSA
+ 12.2.2 LDAP
+ 12.2.3 MSNT
+ 12.2.4 Multi-domain-NTLM
+ 12.2.5 PAM
+ 12.2.6 SASL
+ 12.2.7 SMB
+ 12.2.8 YP
+ 12.2.9 getpwnam
+ 12.2.10 winbind
+ 12.2.11 基本验证API
o 12.3 HTTP摘要验证
+ 12.3.1 password
+ 12.3.2 摘要验证API
o 12.4 Microsoft NTLM验证
+ 12.4.1 SMB
+ 12.4.2 winbind
+ 12.4.3 NTLM验证API
o 12.5 外部ACL
+ 12.5.1 ip_user
+ 12.5.2 ldap_group
+ 12.5.3 unix_group
+ 12.5.4 wbinfo_group
+ 12.5.5 winbind_group
+ 12.5.6 编写自己的外部ACL辅助器
* 第13章 日志文件
o 13.1 cache.log
+ 13.1.1 debug级别
+ 13.1.2 转发cache.log消息到系统日志
+ 13.1.3 dump cache.log消息到终端
o 13.2 access.log
+ 13.2.1 access.log结果编码
+ 13.2.2 HTTP响应状态码
+ 13.2.3 access.log对端编码
+ 13.2.4 影响access.log的配置指令
+ 13.2.5 access.log分析工具
o 13.3 store.log
+ 13.3.1 转换文件号到路径名
o 13.4 referer.log
o 13.5 useragent.log
o 13.6 swap.state
o 13.7 轮转日志
o 13.8 隐私和安全
* 第14章 监视Squid
o 14.1 cache.log告警
o 14.2 Cache管理器
o 14.3 使用SNMP
* 第15章 服务加速模式
o 15.1 概述
o 15.2 配置Squid
+ 15.2.1 http_port
+ 15.2.2 https_port
+ 15.2.3 httpd_accel_host
+ 15.2.4 httpd_accel_port
+ 15.2.5 httpd_accel_uses_host_header
+ 15.2.6 httpd_accel_single_host
+ 15.2.7 httpd_accel_with_proxy
o 15.3 令人疑惑之处
+ 15.3.1 一个主机,一个主机名
+ 15.3.2 一个主机,多个主机名
+ 15.3.3 多个主机,一个主机名
+ 15.3.4 多个主机,多个主机名
o 15.4 访问控制
o 15.5 内容协商
o 15.6 补充
+ 15.6.1 日志
+ 15.6.2 忽略Reload
+ 15.6.3 不可cache的内容
+ 15.6.4 错误
+ 15.6.5 刷新目标
+ 15.6.6 邻居
* 第16章 调试和故障处理
o 16.1 一些通用问题
+ 16.1.1 "Failed to make swap directory"
+ 16.1.2 "Address already in use"
+ 16.1.3 "Could not determine fully qualified hostname"
+ 16.1.4 "DNS name lookup tests failed"
+ 16.1.5 "Illegal character in hostname"
+ 16.1.6 "Running out of filedescriptors"
+ 16.1.7 "icmpRecv: Connection refused"
+ 16.1.8 在运行一段时间后,Squid变慢了
+ 16.1.9 调试访问控制
o 16.2 通过cache.log进行调试
o 16.3 Coredump,断点,和堆栈跟踪
o 16.3.1 不能找到core文件?
o 16.4 重现问题
o 16.5 报告Bug
* 译后序