У меня есть два сервера Squid, Squid A и Squid B.
Squid A прозрачно кэширует для локальной сети.
Я хотел бы настроить Squid A так, чтобы при запросе URL-адреса, соответствующего регулярному выражению, вместо того, чтобы обслуживать запрос как обычно, он «перенаправлял» через Squid B, чтобы Squid B обслуживал запрос, передавая результат обратно в Squid A который передает его клиенту.
Как мне настроить файл конфигурации для Squid A для этого?
Используйте следующее в конфигурации 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 поверх других acls
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. Если вы хотите что-то заблокировать, заблокируйте это в обеих конфигурациях прокси.
вам нужно что-то вроде следующего в squid.conf squid A. используйте его в качестве примера и настройте в соответствии с вашими требованиями.
# define squid B as a parent cache_peer squid.b.example.com parent 3128 3130 default # create ACLs for any domains or IP address ranges that you # don't want to get from the parent (squid B). for example: acl local_domains domain your.local.domains.here acl local_ip dst your.local.ip.addresses.here always_direct_allow local_domains always_direct allow local_ip # and deny direct access to everything else never_direct allow all
В Squid есть особенность, поддерживающая иерархическую организацию прокси-серверов. В страница справочника squid есть отличная документация по этой теме.