如果您希望Squid成为代理层次结构的一部分,或者您只是希望Squid不直接从Web服务器获取内容,而是间接从另一个代理获取内容,那么请阅读如何执行此操作。

您可以使用cache_peer指令添加Squid将要求内容的父代理。此外,您可以分别使用always_directnever_direct控制是直接还是间接获取内容。例如

cache_peer proxy.some-isp.com parent 8080 0 no-query no-digest
never_direct允许所有

会告诉Squid总是从父代理获取内容,该代理位于proxy.some-isp.com:8080。如果我们不使用第二个指令,可能会出现某些情况,Squid会直接询问内容并忽略父代理; 这不是我们想要的。

有很多选项我不想在这里讨论,因为它们有很好的文档,但是没有查询没有消息说没有ICP请求或缓存摘要应该发送到父代理(阅读:应该关闭唠叨)。

多个父代理

如果您想拥有多个父代理,可以添加更多cache_peer指令; 每个父母一个。现在你可以定义权重循环来控制Squid与代理通信的方式:虽然权重告诉Squid更喜欢一个缓存而不是另一个缓存,但循环尝试在定义的缓存之间均匀地分布连接。

首先是两个父代理的简单示例:

cache_peer proxy.isp1.com parent 8080 0 no-query no-digest default
cache_peer proxy.isp2.com parent 8080 0 no-query no-digest

如果您定义了多个父代理,则可能需要将其设置为默认代理,这将用作最后的手段。

重量的一个例子:

cache_peer proxy.isp1.com parent 8080 0 no-query no-digest weight = 1
cache_peer proxy.isp2.com parent 8080 0 no-query no-digest weight = 2

在这个例子中,第二个ISP的代理可能比第一个ISP更受青睐。

这里有一个循环的例子:

cache_peer proxy.isp1.com parent 8080 round-robin no-query
cache_peer proxy.isp2.com parent 8080 round-robin no-query
cache_peer proxy.isp3.com parent 8080 round-robin no-query

我们代理的所有连接都将在这三个缓存中进行循环。由于Squid平等对待所有父母,因此目前无法在此处定义权重,例如将50%的请求分别转发给第一个代理,25%分别转发给第二个和第三个代理。

结论

本文档介绍了如何配置Squid以使用父代理或各种父代理。请查看最新文档,以了解有关最新版Squid中可用的配置详细信息和功能的更多信息。


文章转自:https://www.christianschenk.org/blog/using-a-parent-proxy-with-squid/