标签 代理 下的文章

在本指南中,你将了解如何在 Ubuntu/Debian Linux 发行版中为 apt 命令设置代理。

代理服务器是位于请求资源的客户端系统或最终用户与资源本身之间的中间服务器。在大多数情况下,代理服务器充当最终用户和互联网之间的网关。

对于组织和企业环境,代理服务器提供了许多好处。它通过阻止被认为会影响员工工作效率的网站来控制互联网的使用。它还通过数据加密增强隐私并提高组织的安全性。

有几种方法可以为 apt 命令设置代理,让我们直接进入。

注意:为了演示,我们将使用 Ubuntu 22.04。

使用代理文件为 APT 配置代理

apt 命令配置代理的最简单方法是创建一个 proxy.conf 文件,如下:

$ sudo vi /etc/apt/apt.conf.d/proxy.conf

对于没有用户名和密码的代理服务器,添加以下条目,如下:

对于 HTTP 代理,添加以下条目:

Acquire::http::Proxy "http://proxy-IP-address:proxyport/";

对 HTTPS 代理执行相同的操作:

Acquire::https::Proxy "http://proxy-IP-address:proxyport/";

例子:

$ cat  /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://192.168.56.102:3128/";
Acquire::https::Proxy "http://192.168.56.102:3128/";

如果你的代理服务器需要用户名和密码详细信息,请按以下方式添加:

Acquire::http::Proxy "http://username:password@proxy-IP-address:proxyport";
Acquire::https::Proxy "http://username:password@proxy-IP-address:proxyport";

例子:

$ cat  /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://init@PassW0rd321#@192.168.56.102:3128/";
Acquire::https::Proxy "http://init@PassW0rd321#@192.168.56.102:3128/";

完成后,保存更改并退出配置文件。代理设置将在你下次运行 APT 包管理器时生效。

例如,你可以更新本地包索引,然后安装 net-tools 包:

$ sudo apt update
$ sudo apt install net-tools -y

验证代理服务器日志以确认 apt 命令正在使用代理服务器下载包。在代理服务器运行时:

# tail -f /var/log/squid/access.log  | grep -i 192.168.56.240

这里 192.168.56.240 是我们 Ubuntu 机器的 IP 地址。

完美,上面的输出确认我们的 Ubuntu 系统的 apt 命令正在通过代理服务器(192.168.56.102)下载包。

另一种指定代理详细信息的方法

除了第一种方法,你还可以用更简单的方式指定代理详细信息。再次创建一个 proxy.conf 文件,如下所示。

$ sudo vi /etc/apt/apt.conf.d/proxy.conf

对于没有用户名和密码的代理服务器,如图所示进行定义。

Acquire {
  http::Proxy "http://proxy-IP-address:proxyport/";
  https::Proxy "http://proxy-IP-address:proxyport/";
}

示例文件如下所示:

$ sudo vi /etc/apt/apt.conf.d/proxy.conf

对于具有用户名和登录详细信息的代理服务器:

Acquire {
   http::Proxy "http://username:password@proxy-IP-address:proxyport/";
   https::Proxy "http://username:password@proxy-IP-address:proxyport/";
}

保存更改并退出配置文件。提醒一下,当你开始使用 APT 包管理器,这些设置就会立即生效。

总结

本指南到此结束。在本教程中,我们演示了如何为 Debian/Ubuntu Linux 发行版中使用的 APT 包管理器配置代理设置。本文就到这里了。

(题图:MJ/dfb4d5a0-9150-47bd-9f54-c120ddd77046)


via: https://www.linuxtechi.com/set-proxy-settings-for-apt-command/

作者:James Kiarie 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

什么是代理?

代理是充当客户端和另一台服务器之间的中介的服务器或软件应用。它充当客户端和互联网之间的网关,允许用户访问在线资源,同时隐藏他们的身份、位置和其他个人信息。

代理通常用于增强安全性和隐私,并为你的网络添加过滤器/防火墙。

有几种类型的代理,如 HTTP 代理、SOCKS 代理、透明代理等。

除非你在透明代理后面,否则检查起来毫不费力。在这里,我将讨论检测透明代理和常用代理的方法。

如何检查你是否在透明代理后面

虽然每种类型的代理都有其特性和功能,但如果它是透明代理,你将无法在客户端的 PC 上检测到它。这是因为透明代理在后台静默运行,拦截所有流量而不修改它。

有时,可能是你的互联网服务提供商和内容交付网络使用它们来缓存资源的副本以节省带宽或只是为了监视/过滤网络。

有几种方法可以检查你是否在透明代理后面:

  • 通过某些在线 IP 检测/检查网站获得的 IP 地址可能与你的计算机或设备的 IP 地址不匹配。因为代理服务器正在拦截你的流量并将其与 IP 地址一起发送出去。
  • 检查你的网络设置以查看是否配置了代理服务器。
  • 借助一些在线代理检测工具。
  • 连接到你知道不存在的服务器。 如果网页上显示的错误看起来与平时不同,你可能使用了代理。

无论你喜欢与否,你始终可以使用 VPN 服务 绕过透明代理。

如何检查你是否在 Ubuntu 上使用代理

Ubuntu 或任何其他 Linux 发行版提供了多种检查方法。此处使用运行 GNOME 的 Ubuntu 22.10。

使用 GNOME 设置

这是直接的 GUI 方式。打开 GNOME 设置 Settings 并转到 “ 网络 Networks ” 选项卡,然后按旁边的齿轮图标。

Select the gear icon adjacent to the Network proxy section

它应该默认 禁用 Disabled

如果你在代理后面,你可以在这里看到不同的状态。在代理设置中,你可以看到,我在这里使用了代理(手动配置)。

Proxy details in GNOME Settings

可以使用 GNOME 桌面中的 gsettings 命令更改相同的代理状态。

gsettings set org.gnome.system.proxy mode 'none'

你可以将 none 替换为 automanual。请记住,此设置是临时的,仅适用于当前用户。

使用命令行

你可以通过命令行以多种方式获取代理的状态。

通过列出关联的环境变量获取代理的状态

打开终端并运行以下任一命令:

env | grep -i proxy
cat /etc/environment | grep -i proxy
set | grep -i proxy

Using set command to check Proxy variables

空输出意味着没有配置代理。否则,它将打印相关的环境变量。

? 请注意,如果你将代理设置为环境变量,这将起作用。

或者,你可以回显每个代理变量以检查是否设置了特定的代理变量。

以下是你可以在终端中输入的内容:

echo $http_proxy
使用 nmcli 命令检查

打开终端并输入:

nmcli connection show

List all the connections using nmcli command

这将列出你的连接和关联的 UUID 编号。记下要检查的连接的 UUID 编号。然后使用命令:

nmcli connection show <UUID or name> | grep -i "proxy"

这将列出变量,你可以在其中记下代理服务器和端口。

Proxy details using nmcli command

总结

我希望本指南可以帮助你了解你是否在使用代理。

我必须提一下,并非所有代理配置都是恶意的。

但是,了解你的系统是否配置了代理很重要。


via: https://itsfoss.com/check-proxy-server/

作者:Sreenath 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们大多数人都熟悉代理如何工作,但在基于容器的环境中有什么不同?让我们来看看有什么改变。

内联、 侧臂 side-arm 、反向和前向。这些曾经是我们用来描述网络代理架构布局的术语。

如今,容器使用一些相同的术语,但它们正在引入新的东西。这对我是个机会来阐述我最爱的所有主题:代理。

云的主要驱动之一(我们曾经有过成本控制的白日梦)就是可扩展性。在过去五年中,扩展在各种调查中面临着敏捷性的挑战(有时甚至获胜),因为这是机构在云计算环境中部署应用的最大追求。

这在一定程度上是因为在(我们现在运营的)数字经济中,应用已经成为像实体店的“营业/休息”的标牌和导购一样的东西。缓慢、无响应的应用如同商店关灯或缺少营业人员一样。

应用需要随时可用且能够满足需求。扩展是实现这一业务目标的技术响应。云不仅提供了扩展的能力,而且还提供了自动扩展的能力。要做到这一点,需要一个负载均衡器。因为这就是我们扩展应用程序的方式 :使用代理来负载均衡流量/请求。

容器在扩展上与预期没有什么不同。容器必须进行扩展(并自动扩展)这意味着使用负载均衡器(代理)。

如果你使用的是原有的代理机制,那就是采用基于 TCP/UDP 进行基本的负载平衡。一般来说,基于容器的代理的实现在 HTTP 或其他应用层协议中并不流畅,并不能在旧式的负载均衡(POLB)之外提供其他功能。这通常足够了,因为容器扩展是在一个克隆的、假定水平扩展的环境中进行的:要扩展一个应用程序,就添加另一个副本并在其上分发请求。在入口处(在入口控制器和 API 网关中)可以找到第 7 层(HTTP)路由功能,并且可以使用尽可能多(或更多)的应用路由来扩展应用程序。

然而,在某些情况下,这还不够。如果你希望(或需要)更多以应用程序为中心的扩展或插入其他服务的能力,那么你就可以获得更健壮的产品,可提供可编程性或以应用程序为中心的可伸缩性,或者两者兼而有之。

这意味着插入代理。你正在使用的容器编排环境在很大程度上决定了代理的部署模型,无论它是反向代理还是前向代理。更有趣的是,还有第三个模型挎斗模式 ,这是由新兴的服务网格实现支持的可扩展性的基础。

反向代理

反向代理最接近于传统模型,在这种模型中,虚拟服务器接受所有传入请求,并将其分发到资源池(服务器中心、集群)中。

每个“应用程序”有一个代理。任何想要连接到应用程序的客户端都连接到代理,代理然后选择并转发请求到适当的实例。如果绿色应用想要与蓝色应用通信,它会向蓝色代理发送请求,蓝色代理会确定蓝色应用的两个实例中的哪一个应该响应该请求。

在这个模型中,代理只关心它正在管理的应用程序。蓝色代理不关心与橙色代理关联的实例,反之亦然。

前向代理

这种模式更接近传统的出站防火墙的模式。

在这个模型中,每个容器 节点 都有一个关联的代理。如果客户端想要连接到特定的应用程序或服务,它将连接到正在运行的客户端所在的容器节点的本地代理。代理然后选择一个适当的应用实例,并转发客户端的请求。

橙色和蓝色的应用连接到与其节点相关的同一个代理。代理然后确定所请求的应用实例的哪个实例应该响应。

在这个模型中,每个代理必须知道每个应用,以确保它可以将请求转发给适当的实例。

挎斗代理

这种模型也被称为服务网格路由。在这个模型中,每个容器都有自己的代理。

如果客户想要连接到一个应用,它将连接到挎斗代理,它会选择一个合适的应用程序实例并转发客户端的请求。此行为与前向代理模型相同。

挎斗代理和前向代理之间的区别在于,挎斗代理不需要修改容器编排环境。例如,为了插入一个前向代理到 k8s,你需要代理一个 kube-proxy 的替代。挎斗代理不需要这种修改,因为应用会自动连接到 “挎斗” 代理而不是通过代理路由。

总结

每种模式都有其优点和缺点。三者共同依赖环境数据(远程监控和配置变化),以及融入生态系统的需求。有些模型是根据你选择的环境预先确定的,因此需要仔细考虑将来的需求(服务插入、安全性、网络复杂性)在建立模型之前需要进行评估。

在容器及其在企业中的发展方面,我们还处于早期阶段。随着它们继续延伸到生产环境中,了解容器化环境发布的应用程序的需求以及它们在代理模型实现上的差异是非常重要的。

这篇文章是匆匆写就的。现在就这么多。


via: https://dzone.com/articles/proxy-models-in-container-environments

作者:Lori MacVittie 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我的系统管理员给我提供了如下代理信息:

IP: 202.54.1.1
Port: 3128
Username: foo
Password: bar

该设置在 Google Chrome 和 Firefox 浏览器上很容易设置。但是我要怎么把它应用到 curl 命令上呢?我要如何让 curl 命令使用我在 Google Chrome 浏览器上的代理设置呢?

很多 Linux 和 Unix 命令行工具(比如 curl 命令,wget 命令,lynx 命令等)使用名为 http_proxyhttps_proxyftp_proxy 的环境变量来获取代理信息。它允许你通过代理服务器(使用或不使用用户名/密码都行)来连接那些基于文本的会话和应用。

本文就会演示一下如何让 curl 通过代理服务器发送 HTTP/HTTPS 请求。

让 curl 命令使用代理的语法

语法为:

## Set the proxy address of your uni/company/vpn network ## 
export http_proxy=http://your-ip-address:port/

## http_proxy with username and password 
export http_proxy=http://user:password@your-proxy-ip-address:port/

## HTTPS version ##
export https_proxy=https://your-ip-address:port/
export https_proxy=https://user:password@your-proxy-ip-address:port/

另一种方法是使用 curl 命令的 -x 选项:

curl -x <[protocol://][user:password@]proxyhost[:port]> url
--proxy <[protocol://][user:password@]proxyhost[:port]> url
--proxy http://user:password@Your-Ip-Here:Port url
-x http://user:password@Your-Ip-Here:Port url

在 Linux 上的一个例子

首先设置 http_proxy

## proxy server, 202.54.1.1, port: 3128, user: foo, password: bar ##
export http_proxy=http://foo:[email protected]:3128/
export https_proxy=$http_proxy
## Use the curl command ##
curl -I https://www.cyberciti.biz
curl -v -I https://www.cyberciti.biz

输出为:

* Rebuilt URL to: www.cyberciti.biz/
*   Trying 202.54.1.1...
* Connected to 1202.54.1.1 (202.54.1.1) port 3128 (#0)
* Proxy auth using Basic with user 'foo'
> HEAD HTTP://www.cyberciti.biz/ HTTP/1.1
> Host: www.cyberciti.biz
> Proxy-Authorization: Basic x9VuUml2xm0vdg93MtIz
> User-Agent: curl/7.43.0
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: nginx
Server: nginx
< Date: Sun, 17 Jan 2016 11:49:21 GMT
Date: Sun, 17 Jan 2016 11:49:21 GMT
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Whom: Dyno-l1-com-cyber
X-Whom: Dyno-l1-com-cyber
< Vary: Cookie
Vary: Cookie
< Link: <http://www.cyberciti.biz/wp-json/>; rel="https://api.w.org/"
Link: <http://www.cyberciti.biz/wp-json/>; rel="https://api.w.org/"
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Cache: MISS from server1
X-Cache: MISS from server1
< X-Cache-Lookup: MISS from server1:3128
X-Cache-Lookup: MISS from server1:3128
< Connection: keep-alive
Connection: keep-alive

< 
* Connection #0 to host 10.12.249.194 left intact

本例中,我来下载一个 pdf 文件:

$ export http_proxy="vivek:[email protected]:3128/"
$ curl -v -O http://dl.cyberciti.biz/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

也可以使用 -x 选项:

curl -x 'http://vivek:[email protected]:3128' -v -O https://dl.cyberciti.biz/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

输出为:

Fig.01:curl in action (click to enlarge)

Unix 上的一个例子

$ curl -x http://prox_server_vpn:3128/ -I https://www.cyberciti.biz/faq/howto-nginx-customizing-404-403-error-page/

socks 协议怎么办呢?

语法也是一样的:

curl -x socks5://[user:password@]proxyhost[:port]/ url
curl --socks5 192.168.1.254:3099 https://www.cyberciti.biz/

如何让代理设置永久生效?

编辑 ~/.curlrc 文件:

$ vi ~/.curlrc

添加下面内容:

proxy = server1.cyberciti.biz:3128
proxy-user = "foo:bar"

保存并关闭该文件。另一种方法是在你的 ~/.bashrc 文件中创建一个别名:

## alias for curl command
## set proxy-server and port, the syntax is
## alias curl="curl -x {your_proxy_host}:{proxy_port}"
alias curl = "curl -x server1.cyberciti.biz:3128"

记住,代理字符串中可以使用 protocol:// 前缀来指定不同的代理协议。使用 socks4://socks4a://socks5://或者 socks5h:// 来指定使用的 SOCKS 版本。若没有指定协议或者使用 http:// 表示 HTTP 协议。若没有指定端口号则默认为 1080-x 选项的值要优先于环境变量设置的值。若不想走代理,而环境变量总设置了代理,那么可以通过设置代理为空值("")来覆盖环境变量的值。详细信息请参阅 curl 的 man 页


via: https://www.cyberciti.biz/faq/linux-unix-curl-command-with-proxy-username-password-http-options/

作者:Vivek Gite 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过一位捷克的开发者对此发表了不同意见,认为 Opera 提供的根本不是 VPN,而只是一个代理服务器罢了。

Michal Špacek 是一位 PHP 开发者,他注意到 Opera 的 VPN 设置下方的一行小字:

Secure proxy provided by SurfEasy Inc., an Opera company based in Canada.

由于对这里提到 proxy 感到好奇,他使用自己的开发工具分析了一下 Opera 的 VPN 是如何工作的,然后将他的发现写到了 Github 上。

“Opera 所谓的‘VPN’其实只是一个预配置的 HTTP/S 代理,它可以保护 Opera 浏览器和代理服务器之间的流量,别的什么都不干。根本不是 VPN!” Špacek 写到,“在 Opera 的设置中,他们居然叫它 安全代理 Secure proxy (甚至叫做 VPN)。”

安全代理和 VPN 之间的区别是,安全代理可以保护浏览器和代理服务器之间的 Web 流量的安全,而 VPN 则会保护所有的流量,无论是哪种网络协议。

Opera 也许弄错了 proxy 和 VPN

有些人也许据此认为 Opera 说谎了,但是 Opera 只是个浏览器,只能处理 Web 流量,所以,理论上说,这样的一个安全代理,对于你的 Web 浏览已经足够了。

Opera 也许错误的将这个功能称之为 VPN,但是不管叫什么,它是可以安全使用的,至少对于 HTTP 和 HTTPS 访问来说。如果你要保护其它的网络活动,也许你应该找个真正的 VPN 服务。

正如 Mr. Špacek 在 Twitter 上说的,这件事实际上要看用户是怎么理解的。“最大的风险是用户以为他处于保护之下。我们一般告诉人们 VPN 会加密所有流量信息,而 Opera 号称 VPN 却实际上并没有做 VPN 的事情。”

另外,据国内一些用户反馈,Opera 的 “VPN” 服务很不好用。我们估计,他们部署在加拿大、德国等地的代理服务器有可能被某些网关列入了黑名单,或者是其采用的协议是受到阻拦的。我们认为,Opera 推出的这个“VPN”服务主要目的还是为了让国外用户可以避开国外情报机构的监视,而并不是针对其它的管制。所以,这并没有什么可奇怪的。

Web 代理软件转发 HTTP 请求时并不会改变数据流量。它们可以配置成透明代理,而无需客户端配置。它们还可以作为反向代理放在网站的前端;这样缓存服务器可以为一台或多台 web 服务器提供无限量的用户服务。

网站代理功能多样,有着宽泛的用途:从缓存页面、DNS 和其他查询,到加速 web 服务器响应、降低带宽消耗。代理软件广泛用于大型高访问量的网站,比如纽约时报、卫报, 以及社交媒体网站如 Twitter、Facebook 和 Wikipedia。

页面缓存已经成为优化单位时间内所能吞吐的数据量的至关重要的机制。好的 Web 缓存还能降低延迟,尽可能快地响应页面,让终端用户不至于因等待内容的时间过久而失去耐心。它们还能将频繁访问的内容缓存起来以节省带宽。如果你需要降低服务器负载并改善网站内容响应速度,那缓存软件能带来的好处就绝对值得探索一番。

为深入探查 Linux 下可用的相关软件的质量,我列出了下边5个优秀的开源 web 代理工具。它们中有些功能完备强大,也有几个只需很低的资源就能运行。

Squid

Squid 是一个高性能、开源的代理缓存服务器和 Web 缓存进程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多种协议。它通过一个非阻塞的、I/O 事件驱动的单一进程处理所有的 IPV4 或 IPV6 协议请求。

Squid 由一个主服务程序 squid,和 DNS 查询程序 dnsserver,另外还有一些可选的请求重写、执行认证程序组件,及一些管理和客户端工具构成。

Squid 提供了丰富的访问控制、认证和日志环境, 用于开发 web 代理和内容服务网站应用。

其特性包括:

  • Web 代理:

    • 通过缓存来降低访问时间和带宽使用
    • 将元数据和访问特别频繁的对象缓存到内存中
    • 缓存 DNS 查询
    • 支持非阻塞的 DNS 查询
    • 实现了失败请求的未果缓存
  • Squid 缓存可架设为层次结构,或网状结构以节省额外的带宽
  • 通过广泛的访问控制来执行网站访问策略
  • 隐匿请求,如禁用或修改客户端 HTTP 请求头特定属性
  • 反向代理
  • 媒体范围 media-range 限制
  • 支持 SSL
  • 支持 IPv6
  • 错误页面的本地化 - Squid 可以根据访问者的语言选项对每个请求展示本地化的错误页面
  • 连接固定 Connection Pinning (用于 NTLM Auth Passthrough) - 一种允许 Web 服务器通过 Web 代理使用Microsoft NTLM 安全认证替代 HTTP 标准认证的方案
  • 支持 服务质量 QoS, Quality of Service

    • 选择一个 TOS/Diffserv 值来标记本地命中
    • 选择一个 TOS/Diffserv 值来标记对端命中
    • 选择性地仅标记同级或上级请求
    • 允许任意发往客户端的 HTTP 响应保持由远程服务器处响应的 TOS 值
    • 对收到的远程服务器的 TOS 值,在复制之前对指定位进行掩码操作,再发送到客户端
  • SSL Bump (用于 HTTPS 过滤和适配) - Squid-in-the-middle,在 CONNECT 方式的 SSL 隧道中,用配置化的客户端和服务器端证书,对流量进行解密和加密
  • 支持适配模块
  • ICAP 旁路和重试增强 - 通过完全的旁路和动态链式路由扩展 ICAP,来处理多多个适应性服务。
  • 支持 ICY 流式协议 - 俗称 SHOUTcast 多媒体流
  • 动态 SSL 证书生成
  • 支持 ICAP 协议 (Internet Content Adaptation Protocol)
  • 完整的请求日志记录
  • 匿名连接

  • 网站: www.squid-cache.org
  • 开发: 美国国家应用网络研究实验室(NLANR)和网络志愿者
  • 授权: GNU GPL v2
  • 版本号: 4.0.1

Privoxy

Privoxy (Privacy Enhancing Proxy) 是一个非缓存类 Web 代理软件,它自带的高级过滤功能可以用来增强隐私保护、修改页面内容和 HTTP 头部信息、访问控制,以及去除广告和其它招人反感的互联网垃圾。Privoxy 的配置非常灵活,能充分定制已满足各种各样的需求和偏好。它支持单机和多用户网络两种模式。

Privoxy 使用 action 规则来处理浏览器和远程站点间的数据流。

其特性包括:

  • 高度配置化——可以完全定制你的配置
  • 广告拦截
  • Cookie 管理
  • 支持“Connection: keep-alive”。可以无视客户端配置而保持外发的持久连接
  • 支持 IPv6
  • 标签化 Tagging ,允许按照客户端和服务器的请求头进行处理
  • 作为 拦截 intercepting 代理器运行
  • 巧妙的 动作 action 和过滤机制用来处理服务器和客户端的 HTTP 头部
  • 可以与其他代理软件链式使用
  • 整合了基于浏览器的配置和控制工具,能在线跟踪规则和过滤效果,可远程开关
  • 页面过滤(文本替换、根据尺寸大小删除广告栏, 隐藏的“web-bugs”元素和 HTML 容错等)
  • 模块化的配置使得标准配置和用户配置可以存放于不同文件中,这样安装更新就不会覆盖用户的个性化设置
  • 配置文件支持 Perl 兼容的正则表达式,以及更为精妙和灵活的配置语法
  • GIF 去动画
  • 旁路处理大量 点击跟踪 click-tracking 脚本(避免脚本重定向)
  • 大多数代理生成的页面(例如 "访问受限" 页面)可由用户自定义HTML模板
  • 自动监测配置文件的修改并重新读取
  • 大多数功能可以基于每个站点或每个 URL 位置来进行控制
  • 网站: www.privoxy.org
  • 开发: Fabian Keil(开发领导者), David Schmidt, 和众多其他贡献者
  • 授权: GNU GPL v2
  • 版本号: 3.4.2

Varnish Cache

Varnish Cache 是一个为性能和灵活性而生的 web 加速器。它新颖的架构设计能带来显著的性能提升。根据你的架构,通常情况下它能加速响应速度300-1000倍。Varnish 将页面存储到内存,这样 web 服务器就无需重复地创建相同的页面,只需要在页面发生变化后重新生成。页面内容直接从内存中访问,当然比其他方式更快。

此外 Varnish 能大大提升响应 web 页面的速度,用在任何应用服务器上都能使网站访问速度大幅度地提升。

按经验,Varnish Cache 比较经济的配置是1-16GB内存+ SSD 固态硬盘。

其特性包括:

  • 新颖的设计
  • VCL - 非常灵活的配置语言。VCL 配置会转换成 C,然后编译、加载、运行,灵活且高效
  • 能使用 round-robin 轮询和随机分发两种方式来负载均衡,两种方式下后端服务器都可以设置权重
  • 基于 DNS、随机、散列和客户端 IP 的 分发器 Director
  • 多台后端主机间的负载均衡
  • 支持 Edge Side Includes,包括拼装压缩后的 ESI 片段
  • 重度多线程并发
  • URL 重写
  • 单 Varnish 能够缓存多个虚拟主机
  • 日志数据存储在共享内存中
  • 基本的后端服务器健康检查
  • 优雅地处理后端服务器“挂掉”
  • 命令行界面的管理控制台
  • 使用内联 C 语言来扩展 Varnish
  • 可以与 Apache 用在相同的系统上
  • 单个系统可运行多个 Varnish
  • 支持 HAProxy 代理协议。该协议在每个收到的 TCP 请求——例如 SSL 终止过程中——附加一小段 http 头信息,以记录客户端的真实地址
  • 冷热 VCL 状态
  • 可以用名为 VMOD 的 Varnish 模块来提供插件扩展
  • 通过 VMOD 定义后端主机
  • Gzip 压缩及解压
  • HTTP 流的通过和获取
  • 神圣模式和优雅模式。用 Varnish 作为负载均衡器,神圣模式下可以将不稳定的后端服务器在一段时间内打入黑名单,阻止它们继续提供流量服务。优雅模式允许 Varnish 在获取不到后端服务器状态良好的响应时,提供已过期版本的页面或其它内容。
  • 实验性支持持久化存储,无需 LRU 缓存淘汰

Polipo

Polipo 是一个开源的 HTTP 缓存代理,只需要非常低的资源开销。

它监听来自浏览器的 web 页面请求,转发到 web 服务器,然后将服务器的响应转发到浏览器。在此过程中,它能优化和整形网络流量。从本质来讲 Polipo 与 WWWOFFLE 很相似,但其实现技术更接近于 Squid。

Polipo 最开始的目标是作为一个兼容 HTTP/1.1 的代理,理论它能在任何兼容 HTTP/1.1 或更早的 HTTP/1.0 的站点上运行。

其特性包括:

  • HTTP 1.1、IPv4 & IPv6、流量过滤和隐私保护增强
  • 如确认远程服务器支持的话,则无论收到的请求是管道处理过的还是在多个连接上同时收到的,都使用 HTTP/1.1 管道 pipelining
  • 下载被中断时缓存起始部分,当需要续传时用 区间 Range 请求来完成下载
  • 将 HTTP/1.0 的客户端请求升级为 HTTP/1.1,然后按照客户端支持的级别进行升级或降级后回复
  • 全面支持 IPv6 (作用域(链路本地)地址除外)
  • 作为 IPv4 和 IPv6 网络的网桥
  • 内容过滤
  • 能使用 Poor Man 多路复用技术 Poor Man's Multiplexing 降低延迟
  • 支持 SOCKS 4 和 SOCKS 5 协议
  • HTTPS 代理
  • 扮演透明代理的角色
  • 可以与 Privoxy 或 tor 一起运行

Tinyproxy

Tinyproxy 是一个轻量级的开源 web 代理守护进程,其设计目标是快而小。它适用于需要完整 HTTP 代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。

Tinyproxy 对小规模网络非常有用,这样的场合下大型代理会使系统资源紧张,或有安全风险。Tinyproxy 的一个关键特性是其缓冲连接的理念。从效果上看, Tinyproxy 对服务器的响应进行了高速缓冲,然后按照客户端能够处理的最高速度进行响应。该特性极大的降低了网络延滞带来的问题。

特性:

  • 易于修改
  • 隐匿模式 - 定义哪些 HTTP 头允许通过,哪些又会被拦截
  • 支持 HTTPS - Tinyproxy 允许通过 CONNECT 方法转发 HTTPS 连接,任何情况下都不会修改数据流量
  • 远程监控 - 远程访问代理统计数据,让你能清楚了解代理服务当前的忙碌状态
  • 平均负载监控 - 通过配置,当服务器的负载接近一定值后拒绝新连接
  • 访问控制 - 通过配置,仅允许指定子网或 IP 地址的访问
  • 安全 - 运行无需额外权限,减小了系统受到威胁的概率
  • 基于 URL 的过滤 - 允许基于域和URL的黑白名单
  • 透明代理 - 配置为透明代理,这样客户端就无需任何配置
  • 代理链 - 在流量出口处采用上游代理服务器,而不是直接转发到目标服务器,创建我们所说的代理链
  • 隐私特性 - 限制允许从浏览器收到的来自 HTTP 服务器的数据(例如 cookies),同时限制允许通过的从浏览器到 HTTP 服务器的数据(例如版本信息)
  • 低开销 - 使用 glibc 内存开销只有2MB,CPU 负载按并发连接数线性增长(取决于网络连接速度)。 Tinyproxy 可以运行在老旧的机器上而无需担心性能问题。
  • 网站: banu.com/tinyproxy
  • 开发: Robert James Kaes和其他贡献者
  • 授权: GNU GPL v2
  • 版本号: 1.8.3

via: http://www.linuxlinks.com/article/20151101020309690/WebDelivery.html

译者:fw8899 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出