
我有兩個魷魚伺服器,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
並在其他 acl 頂部的魷魚 B 配置中執行以下操作
acl A_proxy src <Squid server A IP>/32
http_access allow A_proxy
之後,您可以將正規表示式新增至檔案/etc/squid/divert.txt並重新載入squid。將從伺服器 B 請求匹配的 URL,而不是直接請求。
我之所以提到在代理 B 上也添加 acl 的原因是為了避免代理 B 上的身份驗證、連接限制等設定會影響代理 A 的客戶端,因為此類問題很難調試。因此,最好允許從代理 A 到代理 B 的所有請求。
答案2
你想要在squid A 的squid.conf 中有類似下面的內容。使用它作為示例並進行調整以滿足您的特定要求。
# 將squid B定義為父級 cache_peer squid.b.example.com 父級 3128 3130 預設值 # 為您選擇的任何網域或 IP 位址範圍建立 ACL # 不想從父級(squid B)取得。例如: acl local_domains 域 your.local.domains.here acl local_ip dst your.local.ip.addresses.here 始終直接允許本地域 Always_direct 允許 local_ip # 並拒絕直接存取其他所有內容 never_direct 允許所有
答案3
Squid 特別具有支援代理伺服器分層組織的功能。這魷魚手冊頁有關於該主題的優秀文檔。