两行 cache_peer 并不意味着“先走第一个代理,再走第二个”。它们定义的是 Squid 可以选择的 peer。轮询请求可以在父代理之间交替,而从不经过两者。

串行路由分布在各个实例上:

client → A → B → C → origin
  • A 选择 B 作为它的下一跳。
  • B 选择 C。
  • C 打开到源的连接。

每个接收方都必须授权它的直接下游 peer。如果禁止跳过下一跳,每个实例还需要一条兼容的直接访问策略。

在支持这些指令的版本上,cache_peer 定义 peer,cache_peer_access 限制选择,never_direct 禁止所选流量的直接转发。仅定义 peer 并不会建立另外两条策略中的任何一条。

在每个跳点上核实判断。A 选择 B 的日志不能证明 B 选择了 C。本地缓存命中可以完全避免新的上游连接,因此某次请求没有父代理流量,并不足以证明链路中断。

相关文章