我可以配置 Ubuntu 以对部分网站使用代理吗?

我可以配置 Ubuntu 以对部分网站使用代理吗?

首先我应该声明一下,我对代理基本上一无所知(尽管不久前写过一个玩具缓存代理:))。

我有一组小型服务器在防火墙后面运行。其中一台服务器(“server0”)可以通过端口 8080 上的 http 连接,其余服务器都被阻止。我想在 server0 上设置一个代理,以便它将请求转发到 server1、server2 等。

我还想配置我的客户端计算机(全部运行 Ubuntu)以使用 server0:8080 上的代理,但只针对命中 server* 的 URL,不针对其余流量。到目前为止,我只能找到为所有流量设置代理的说明,而不仅仅是为匹配某些正则表达式的流量设置代理。

这可能吗?有任何提示/链接/等等吗?

另外,关于选择合适的代理软件的建议也很好。

谢谢。

答案1

我个人使用作为反向代理(我发现它更适合这项任务,而 Squid 并非天生就是反向代理),并且它确实具有高级功能,可以根据您的需要将流量重定向到不同的内容后端(循环、正则表达式、负载平衡……它真的很强大)。如果您对此感兴趣,我可以更详细地阐述这一点。

关于问题的第二部分(仅对某些地址使用代理),您可以使用一个简单的 PAC 文件:

function FindProxyForURL(url, host) {
    if (shExpMatch(host, "*.mydomain.com"))
        return "SOCKS 10.0.0.1:1080";
    return "DIRECT";
}

答案2

FoxyProxy 是一个 Firefox 扩展,它允许您配置 FireFox,以便将与特定正则表达式匹配的 URL 发送到特定代理。这听起来正是您想要的,但集中管理可能很困难。

可能可以使用 WPAD 来获得一个代理 pac 文件,该文件规定只有某些 URL 才能通过某些代理,但我不确定,必须对此进行研究。

这种方法听起来过于复杂。我建议最好有一个每个人都要经过的中央代理,然后该代理可以自行决定将请求转发到哪里。我相信使用 Squid 时,您可以说“对此 URL 的请求应通过另一个代理转发”。

答案3

我认为你要找的是乌贼(反向代理)

答案4

就像 @mohsen 说的,听起来你需要一个反向代理。如果 squid 设置起来有点麻烦,你可以尝试一些简单的方法,例如或者或者,类似lighttpd可以使用 mod_proxy 配置为反向代理。

相关内容