
У меня есть два сервера Squid: Squid A и Squid B.
Squid A прозрачно кэширует данные для локальной сети.
Я хотел бы настроить Squid A таким образом, чтобы при запросе URL-адреса, соответствующего регулярному выражению, вместо того, чтобы обслуживать запрос как обычно, он «перенаправлял» его через Squid B, чтобы Squid B обслужил запрос и передал результат обратно в Squid A, который передал его клиенту.
Как мне настроить файл конфигурации для Squid A, чтобы сделать это?
решение1
Используйте следующее в конфигурации squid A (обычно /etc/squid/squid.conf)
cache_peer <squid server B IP> parent <server B squid port> 3130 no-query no-digest no-netdb-exchange
acl otherproxy url_regex "/etc/squid/divert.txt"
cache_peer_access <Squid server B IP> allow otherproxy
never_direct allow otherproxy
cache_peer_access <squid server B IP> deny all
И далее в конфигурации Squid B поверх других списков контроля доступа
acl A_proxy src <Squid server A IP>/32
http_access allow A_proxy
После этого вы можете добавить регулярные выражения в файл /etc/squid/divert.txt и перезагрузить squid. Соответствующие URL будут запрошены с сервера B, а не напрямую.
Причина, по которой я упомянул добавление acl на прокси B, заключается в том, чтобы избежать настроек аутентификации, ограничения подключений и т. д. на прокси B, влияющих на клиентов прокси A, поскольку такие проблемы очень сложно отладить. Поэтому лучше разрешить все запросы от прокси A к прокси B. Если вы хотите что-то заблокировать, заблокируйте это в обеих конфигурациях прокси.
решение2
вам нужно что-то вроде следующего в squid.conf squid A. используйте его в качестве примера и настройте в соответствии со своими точными требованиями.
# определить squid B как родителя cache_peer squid.b.example.com родительский 3128 3130 по умолчанию # создать списки контроля доступа для любых доменов или диапазонов IP-адресов, которые вы # не хотим получать от родителя (squid B). например: acl local_domains домен your.local.domains.here acl local_ip dst ваши.локальные.ip.адреса.здесь always_direct_allow локальные_домены always_direct разрешить local_ip # и запретить прямой доступ ко всему остальному never_direct разрешить все
решение3
В частности, Squid имеет функцию поддержки иерархической организации прокси-серверов.страница руководства по кальмарусодержит прекрасную документацию по этой теме.