因此,我已在我的 ec2 实例上安装并运行了 squid 代理服务器。我的任务是让任何 PC 客户端连接到代理,仅在访问某些网站时使用代理,其他所有网站均使用常规 wifi 连接。类似于白名单,或者仅对某些特定网站使用代理,其他网站则不使用。
这样的事情真的可以实现吗?
非常感谢任何帮助或指导。
干杯!
答案1
是的,这是一个典型的 PAC 文件用法,请检查下面的示例代码:
function FindProxyForURL(url, host) {
// If the hostname matches, send to the proxy.
if (dnsDomainIs(host, "exampldomain.com") ||
shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
return "PROXY 1.2.3.4:8080";
// DEFAULT RULE: All other traffic, send direct.
return "DIRECT";
}
dnsDomainIs 和 shExpMatch 是两个检查域名是否匹配的函数,dnsDomainIs 评估主机名,如果主机名匹配则返回 true。主要用于匹配和排除单个主机名。shExpMatch 将尝试将主机名或 URL 与指定的 shell 表达式进行匹配,如果匹配则返回 true。
如果您希望用户在无法访问代理时尝试直接连接,则需要修改此行:
return "PROXY 1.2.3.4:8080";
成为:
return "PROXY 1.2.3.4:8080; DIRECT";