Wiele nadrzędnych proxy Squid to alternatywy, a nie łańcuch szeregowy
Lista peerów daje Squidowi wybór. Trasa szeregowa A → B → C wymaga wyboru następnego skoku w każdej instancji przekazywania.
Dwie linie cache_peer nie oznaczają „najpierw przejdź przez pierwszy proxy, a potem przez drugi”. Definiują peery, które Squid może wybrać. Żądania round-robin mogą przełączać się między rodzicami, nigdy nie przechodząc przez oba.
Trasa szeregowa jest rozłożona między instancje:
client → A → B → C → origin
- A wybiera B jako swój następny skok.
- B wybiera C.
- C otwiera połączenie ze źródłem.
Każdy odbiorca musi autoryzować swojego bezpośredniego peera niższego poziomu. Każda instancja potrzebuje też zgodnej polityki dostępu bezpośredniego, jeśli pomijanie jej następnego skoku jest zabronione.
W wersjach, które je obsługują, cache_peer definiuje peera, cache_peer_access ogranicza wybór, a never_direct zabrania bezpośredniego przekazywania dla wybranego ruchu. Sama definicja peera nie ustanawia żadnej z dwóch pozostałych polityk.
Sprawdzaj decyzję na każdym skoku. Dziennik A wybierającego B nie może dowieść, że B wybrał C. Trafienie w lokalny cache może całkowicie uniknąć nowego połączenia w górę, więc brak ruchu rodzica dla jednego żądania nie jest wystarczającym dowodem zerwanego łańcucha.