两只鱿鱼链

两只鱿鱼链

我有两个 Squid 服务器,Squid A 和 Squid B。

Squid A 为本地网络透明地缓存。

我想设置 Squid A,以便在对与正则表达式匹配的 URL 的请求中,它不是像平常一样提供请求,而是通过 Squid B“重定向”,以便 Squid B 提供请求,将结果传递回 Squid A,然后 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 的顶部进行如下操作

acl A_proxy src <Squid server A IP>/32
http_access allow A_proxy

之后,您可以将正则表达式添加到文件 /etc/squid/divert.txt 并重新加载 squid。匹配的 URL 将从服务器 B 请求,而不是直接请求。

我之所以提到在代理 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 你的本地ip地址
always_direct_allow local_domains
always_direct 允许 local_ip

# 并拒绝对其他所有内容的直接访问
never_direct 允许所有

答案3

Squid 特别具有支持代理服务器分层组织的功能。squid 手册页有关于该主题的出色文献。

相关内容