如何设置Squid的代理转发?
- By : Will
- Category : Forward Proxy
- Tags: Forward Proxy Tags: Proxy, squit, 二级, 代理, 正向

1 基础知识
1.1 Squid的层次结构
1.1.1 什么是层次结构
如上图所示:
– 将多个Squid连接在一起形成一个“网络”或高速缓存的层次结构
– 图中绿色线代表父子关系的层次结构(上游下游关系)
– 图中蓝色代表兄弟关系的层次结构(平等关系)
1.1.2 复杂的层次结构
如上图所示:
– 以上层次结构由刚才简单的父子结构与兄弟结构组成
– 以上结构实现负载均衡的功能
1.2 如何实现层次结构
1.2.1 代理转发
– Squid使用“cache_peer”指令提供父节点的缓存
1.2.2 cache_peer指令的模式
– never direct模式,父节点失败不能直接连接源服务器,如果父节点失败或无法访问,则每个请求都导致错误消息
– prefer direct模式,父节点失败允许直接连接源服务器,如果父节点失败或无法访问,则连接到源服务器而不是父节点
注:失败是指没有ICP或HTCP回复
1.2.3 never direct模式
cache_peer parentcache.foo.com parent 3128 0 no-query default never_direct allow all
注:以上使用never_direct指令宣告父节点失败不能直接连接源服务器
1.2.4 prefer direct模式
cache_peer parentcache.foo.com parent 3128 0 no-query prefer_direct off nonhierarchical_direct off
注:
以上使用prefer_direct指令宣告首选从DNS中列出源服务器尝试
以上使用nonhierarchical_direct指令宣告往父节点的请求继续发送
hierarchy_stoplist指令是prefer direct模式的另外一种实现(适用于Squid-3.2之前的版本)
1.3 cache_peer指令的使用
1.3.1 指令的格式
cache_peer hostname type http-port icp-port [options]
– hostname参数,指定转发的代理服务器主机名称(IP地址亦可)
– type参数,可选值有“parent”(父母)、“sibling”(兄弟)和“multicast”(多播)
– http-port参数,指定转发的代理服务器通讯端口,默认值3128
– icp-port参数,查询对象的邻居缓存,如果不支持ICP或HTCP,设置为0
– options参数,可选的其他选项(不一一列举)
1.3.2 参数的参考文档
如果你需要了解更加详细的参数,请参阅以下文档,
http://www.squid-cache.org/Doc/config/cache_peer/)
2 最佳实践
2.1 环境搭建
当前假设你有一个代理网关,请按照如下教程安装配置搭建二级代理服务器,
https://www.cmdschool.org/archives/1154
2.2 配置二级代理连接上级代理
2.2.1 修改配置
vim /etc/squid/squid.conf
加入如下配置:
cache_peer 192.168.0.1 parent 8080 0 no-query default login=cmdschool\user:password never_direct allow all
注:以上代码使用域身份登录上级的企业代理网关并将自己作为代理
2.2.2 检查配置语法
squid -k parse
2.2.3 重启服务使配置生效
systemctl restart squid
2.2.4 将代理指向本机的Squid服务端口
export https_proxy="http://127.0.0.1:3128" export http_proxy="http://127.0.0.1:3128"
2.2.5 测试二级代理通讯
curl http://www.cmdschool.org curl https://www.cmdschool.org
参阅文献
==================
Squid转发的架构介绍
——————
https://wiki.squid-cache.org/Features/CacheHierarchy?highlight=%28cache_peer%29
Squid的cache_peer指令详解
————————
http://www.squid-cache.org/Doc/config/cache_peer/
Squid的cache_peer指令使用范例
—————————-
https://wiki.squid-cache.org/ConfigExamples/Reverse/SslWithWildcardCertifiate?highlight=%28cache_peer%29
没有评论