Два кальмара, объединенных в цепочку

Два кальмара, объединенных в цепочку

У меня есть два сервера 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 имеет функцию поддержки иерархической организации прокси-серверов.страница руководства по кальмарусодержит прекрасную документацию по этой теме.

Связанный контент