Декларирането на родител в Squid само по себе си не означава, че всяка препратена заявка трябва да го използва. Ако директният маршрут нарушава политиката ви, задайте това изрично и тествайте поведението при недостъпен родител.

Този пример за Squid 6.13 именува един родител и забранява директно препращане към източника за един клиентски източник:

cache_peer 192.0.2.20 parent 3128 0 no-query default name=upstream
acl routed_client src 198.51.100.27/32
never_direct allow routed_client

Двата адреса са заместители. За контролиран upstream тест, при който публични HTTP родители са разрешени, изберете адрес от списъка с HTTP прокси. Запазете отделната http_access политика, допускаща само желаните клиенти. Правилото за маршрутизиране не дава право на клиент да използва проксито.

Проверете съществуващите правила за маршрутизиране

no-query изключва ICP заявките към този партньор. Нулата е неговият порт за запитвания, не HTTP слушателят. Слушателят към клиентите и правилата му за достъп остават отделни.

Преди добавянето на блока прегледайте съществуващите always_direct настройки и другите избори на партньори. Отказ на съвпадение в always_direct сам по себе си не изисква родител. Изричното правило never-direct задава това изискване за избрания клиент.

Това управлява транзакциите, които изискват препращане. Използваем локален кеширан запис може да се обслужи без контакт с родителя, затова липсата на нова връзка с него не е автоматично нарушение на маршрута.

Проверете маршрута и поведението при грешка

Използвайте контролирана цел и съпоставете информацията за йерархията в журнала за достъп с наблюденията на целта. Само крайният HTTP статус не показва дали Squid е използвал родителя, или директен маршрут.

В тест за поддръжка направете родителя недостъпен и повторете същата некеширана заявка. Ако политиката забранява директно препращане, транзакцията трябва да се провали, вместо да достигне източника по друг път. Правете това само на услуги под ваш контрол и после възстановете желаната конфигурация.

Подобни статии