代理的介绍

介绍

代理,也叫代理服务器,是一种位于互联网客户端和服务器之间的服务器软件。如果没有代理,客户端将直接向服务器发送资源请求,然后服务器将直接将资源返回给客户端。尽管这种方法简单易懂并且容易实现,但添加代理可以提供性能、隐私、安全等方面的优势。作为额外的中间层,代理充当了客户端和服务器之间的互联网守门人。

一般而言,将安装代理软件的服务器硬件与之结合被称为代理服务器。然而,本文将专注于传统定义中的代理软件,并且仅限于Web服务器的背景下。您将了解到两种主要类型,即正向代理和反向代理。由于命名约定相近而常常混淆,因此每种类型都有不同的用途。

本文将向您介绍代理服务器及其子类型的概念,并说明它们在常见配置中的用途。通过阅读本文,您将能够识别出代理服务器对特定情况的益处,并在任何给定情境中选择合适的正向代理或反向代理解决方案。

理解正向代理

一个前向代理,也被称为开放代理,扮演了客户端的代表,该客户端试图通过互联网向原始服务器发送请求。在这种情况下,客户端发送请求的所有尝试都将被发送到前向代理。前向代理将代替客户端检查请求。首先,它将确定此客户端是否被授权通过特定的前向代理发送请求。然后,它将拒绝请求或将其转发给原始服务器。客户端无法直接访问互联网;它只能访问前向代理允许它访问的内容。

前向代理的常见用途之一是在互联网上获得更高的隐私或匿名性。前向代理代表客户端访问互联网,在此过程中,可以使用不同于客户端原始IP地址的IP地址。

根据配置方式,正向代理可以提供多种功能,使您能够:

  • Avoid ad tracking.
  • Circumvent surveillance.
  • Identify restrictions based on your geolocation.

前向代理也在集中安全和基于权限的访问系统中使用,例如在工作场所。当所有的互联网流量经过一个公共前向代理层时,管理员可以只允许特定客户端通过一个公共防火墙访问互联网。不必为包含多台机器、环境和用户不同的客户层维护防火墙,可以将防火墙放置在前向代理层。

请记住,为了使用正向代理,必须手动设置,而反向代理可以在客户端中不被注意到。根据正向代理是否将客户端的IP地址传递给源服务器,可以提供隐私和匿名性,也可以保持透明。

关于正向代理,有几个选项需要考虑:

  • Apache: A popular open-source web server that offers forward proxy functionality.
  • Nginx: Another popular open-source web server with forward proxy functionality.
  • Squid: An open-source forward proxy that uses the HTTP protocol. This option doesn’t include an entire web server solution. You can check out our guide on how to set up Squid proxy for private connections on Ubuntu 20.04.
  • Dante: A forward proxy that uses the SOCKS protocol instead of HTTP, making it more suitable for use cases such as with peer-to-peer traffic. You may also want to check out how to set up Dante proxy for private connections on Ubuntu 20.04

理解反向代理

一个反向代理充当网络服务器的代表,代表其处理来自客户端的传入请求。该网络服务器可以是单个服务器或多个服务器。此外,它还可以是一个应用程序服务器,如Gunicorn。在任何情况下,客户端请求将通过互联网发送。通常,这个请求会直接发送到包含所请求资源的网络服务器。相反,反向代理充当一个中间人,将网络服务器与开放互联网的直接互动隔离开来。

从客户的角度来看,与反向代理交互与直接与Web服务器交互没有任何区别。功能上是相同的,客户端无法察觉到任何差异。客户端请求资源,然后接收到它,无需任何额外的客户端配置。

反向代理提供功能,例如:

  • Centralized security for the web server layer.
  • Directing incoming traffic based on rules you can configure.
  • Added functionality for caching.

虽然集中安全性是正向和反向代理的好处,但是反向代理仅提供给Web服务器层,而不是客户端层。不需要在Web服务器层维护防火墙,可以将大部分防火墙安全性集中在反向代理层。此外,将与防火墙和客户端请求的接口责任从Web服务器分离出来,使它们能够专注于仅提供资源。

如果在反向代理后存在多个服务器,则反向代理还会处理将请求发送到哪个服务器的指令。多个Web服务器可以提供相同的资源,每个服务器提供不同类型的资源,或者两者的组合。这些服务器可以使用HTTP协议作为传统Web服务器,但也可以包括应用程序服务器协议,如FastCGI。您可以配置反向代理根据所请求的资源将客户端引导到特定的服务器,或者根据流量负载的某些规则进行引导。

反向代理还可以利用它们在Web服务器前的位置,提供缓存功能。可以通过配置缓存规则来避免在每次请求时都访问Web服务器,并且一些解决方案还提供了在完全不接触Web服务器的情况下直接提供静态资产的选项。此外,反向代理还可以处理这些资产的压缩。

流行的Nginx网服务器也是一种常用的反向代理解决方案。虽然Apache网服务器也具有反向代理功能,但对于Apache而言,这只是一个附加功能,而Nginx最初就是为反向代理功能而构建和专注的。

区分正向代理和反向代理的使用案例

因为“前向”和“反向”具有指向性的含义,并且与“流入”和“流出”流量进行误导性比较,这些标签可能会让人感到困惑,因为两种类型的代理都处理请求和响应。相反,更好的区分前向代理和反向代理的方法是根据你正在构建的应用程序的需求来考虑。

当构建解决方案以在互联网上提供网络应用程序时,反向代理非常有用。它们在与互联网的任何交互中代表着你的网络服务器。

当放置在个人使用或工作场所环境的客户端流量前方时,正向代理非常有用。它们在与互联网的任何交互中代表你的客户端流量。

不要纠结于相似的命名约定,而是根据具体的使用情景进行区分,这样可以避免混淆。

结论

本文定义了代理(proxy)以及其两种主要类型:前向代理(forward proxy)和反向代理(reverse proxy)。通过实际使用案例和对有益特点的探讨,区分了前向代理和反向代理。如果您想了解代理的实施方法,可以参考我们的指南,了解如何在Ubuntu 20.04服务器上配置Nginx作为Web服务器和反向代理Apache。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds