Linux/Windows/Docker的十大最佳反向代理
,
,
什么是反向代理?反向代理是位于 Web 服务器前面的服务器,其将客户端(例如 Web 浏览器)请求转发到这些 Web 服务器。反向代理通常用于帮助提高安全性、性能和可靠性。为了更好地理解反向代理的工作原理以及它可以提供的好处,我们来首先定义什么是代理服务器。,,转发代理,通常称为代理、代理服务器或 Web 代理,是位于一组客户端计算机之前的服务器。当这些计算机向 Internet 上的站点和服务发出请求时,代理服务器将拦截这些请求,然后代表客户端与 Web 服务器进行通信,起到中间设备的作用。,例如,典型的转发代理通信中涉及 3 台计算机:,,在标准的互联网通信中,计算机 A 将直接与计算机 C 保持联系,客户端将请求发送到源服务器,并且源服务器将响应客户端。当存在转发代理时,A 将请求发送到 B,B 随后将请求转发给 C。C 将向 B 发送响应,而 B 则将响应转发给 A。,为什么要将这个多余的中间设备添加到 Internet 活动中?使用转发代理可能有几个原因:,反向代理是位于一个或多个 Web 服务器前面的服务器,拦截来自客户端的请求。这与转发代理不同 – 在转发代理中,代理位于客户端的前面。使用反向代理,当客户端将请求发送到网站的源服务器时,反向代理服务器会在网络边缘拦截这些请求。然后,反向代理服务器将向源服务器发送请求并从源服务器接收响应。,转发代理和反向代理之间的区别非常细微,但非常重要。简单概括而言,转发代理位于客户端的前面,确保没有源站直接与该特定客户端通信;而反向代理服务器位于源站前面,确保没有客户端直接与该源站通信。,这一次,所涉及的计算机包括:,,通常,来自 D 的所有请求都将直接发送到 F,而 F 会直接将响应发送到 D。使用反向代理,来自 D 的所有请求都将直接发送给 E,而 E 会将其请求发送到 F 并从 F 接收响应,然后将适当响应传递给 D。,下面是反向代理的一些好处:, ,什么是反向代理?反向代理是位于 Web 服务器前面的服务器,其将客户端(例如 Web 浏览器)请求转发到这些 Web 服务器。反向代理通常用于帮助提高安全性、性能和可靠性。为了更好地理解反向代理的工作原理以及它可以提供的好处,我们来首先定义什么是代理服务器。,在标准的互联网通信中,计算机 A 将直接与计算机 C 保持联系,客户端将请求发送到源服务器,并且源服务器将响应客户端。当存在转发代理时,A 将请求发送到 B,B 随后将请求转发给 C。C 将向 B 发送响应,而 B 则将响应转发给 A。,
在这个数字时代导航可能令人生畏,从无休止地研究特定电影,在社交媒体上滚动厄运,用最新的用餐体验更新我们的追随者和朋友,以及用点赞或连锁表情符号认真回应每条评论。每次我们点击进入,我们都冒着将我们的个人信息王国暴露给数据窃贼的风险。,,我们很多人都去过那里。也许您曾在网上窃取过信息,听过胭脂网络摄像头的恐怖故事,在遭受重大网络攻击后被迫更改密码。你甚至可能觉得自己没有办法保护自己。那么,您如何在不降低数据窃贼的门槛的情况下穿越互联网呢?以 Web 代理服务器的形式提升您的防御能力,这是我们对互联网的守卫塔。,好吧,它不是直接将网络数据接收到我们的设备、冒着我们的隐私风险和共享我们的公共 IP 地址,而是通过网络代理服务器。服务器有一个不同的 IP 地址来伪装任何潜在的风险。从这个意义上说,它就像一个邮政信箱,而不是你的居住地址。,老实说,我从来没有想过保持 IP 地址的机密性是多么重要,直到我想到这个疯狂的长数字链会泄露多少信息,我们中的许多人甚至都不会三思而后行。它不仅可以泄露您设备的虚拟位置,还可以泄露数据。事实上,它可能会显示您最喜欢的网站、搜索历史、您公司的网络服务器或网络摄像头等连接设备。,每个可以连接到互联网的设备都有一个 IP 地址。想想看,那是你的手机、笔记本电脑、智能手表、游戏机。每次我们购买连接到网络的新设备时,我们都会增加泄露信息的风险。,更多信息需要咀嚼?想想网站如何捕获您的数据。您甚至不必在网上商店购物,他们就可以获取您的 IP 地址。因此,仅通过单独访问,您就有可能被分析并追溯到您的网络。,你用来查找优惠券代码的那个粗略的网站?是的,他们可以访问您的 IP 地址。寻找从另一个国家的人制作的角色扮演靴子?他们也有你的IP地址。Web 代理服务器本质上是您在化妆舞会上的面具,让您在享受互联网的所有乐趣的同时匿名搜索。,,除了所有的恐惧之外,使用 Web 代理服务器的一个好处是它可以减少您定期搜索的网页的加载时间。通过使用缓存为您存储网页,您的小警卫塔不仅可以保护您的 IP 地址,而且可以更快地恢复您喜爱的网站。例如,假设您在笔记本电脑上打开了一家酒厂的网站,该网页被存储在 Web 代理服务器上。,因此,当您通过智能手机向您的朋友展示从外地访问酒庄网站时,该网页的加载速度会更快,因为当您在笔记本电脑上查找它时,它已缓存在您的代理站点列表中。,让我们避免让您搜索超出此博客文章的内容并增加共享该IP 地址的风险。我将进一步解释服务器上的缓存如何如此有益。起初,这个概念超出了我的想象,但将 Web 代理缓存想象成一个书签。服务器为您在网页上“保存您的位置”,但与书签不同的是,它为您节省了带宽。您不仅加快了页面加载所需的时间。但是,您还可以通过虚拟方式再次获取所有数据,从而避免在家中的互联网超载。,简单来说,这就像在您的办公桌上保持打开书签页面一样。您无需花费额外的时间走到书架前,打开书本来参考页面。它已经准备好供您参考,无需额外精力。, 在您的业务中起床,在专业方面,不那么有趣,但当您是公司城堡的国王或王后时非常重要,代理服务器还可以管理活动日志,跟踪搜索历史和在网站上花费的时间。厌倦了 Nobles aka 员工花费太多时间在 Vrbo 上查找度假租金?您可以配置 Web 代理以阻止或取消阻止活动日志中的代理网站,并防止您的员工访问它们并可能分心。,这一切听起来都很棒,对吧?好吧,还有更多关于这些服务器的知识。之前我解释过这些服务器充当您城堡的守卫塔。如果我告诉你有不同类型的警卫塔跳着相似的舞蹈但步法略有不同怎么办?, 正向代理与反向代理,您可能会在 Web 代理研究中看到或听说过正向或反向代理。它们之间的区别在于请求在服务器中移动的方向,这似乎很明显,对吧?不适合所有人,当您第一次开始研究不同代理如何发送请求时,这可能会有点令人困惑。在寻求投资 Web 代理服务器时了解这些类型非常重要,因为它们都为不同的用例提供保护。,正向代理正在完成我之前讨论过的工作。它处理从您的设备发出到 Web 服务器然后进入虚拟混乱的请求。代理允许您伪装您的 IP 地址以及前面提到的所有其他好处。,如果您有多个用于处理客户端流量的服务器,则反向代理会做一些更独特的事情:例如,您制作了一个需要客户端下载和登录的应用程序,您的应用程序存在于一个或多个服务器上,一个农场如果你会。反向代理充当您农场的守卫塔。客户端使用他们的设备请求您的反向代理:代理然后根据他们的需要将该请求发送到您的服务器或服务器,然后将其发送回客户端。,我会详细说明,因为我喜欢我的隐喻。您的反向代理警卫塔,保护农场(也就是您的应用程序/服务所在的服务器),接受城堡墙外旅行商人的订单。商户无法越过反向代理守卫塔,但它可以将请求带给他们。保护农场免受外来者的任何潜在危害。,反向代理服务器具有与正向代理类似的优势:提高安全性以防止 DDOS 攻击(拒绝服务攻击)、阻止机器人和黑客。您还可以获得相同的缓存优势,当类似的请求进来时,反向 Web 代理服务器将能够更快地发送它们,并且相信我总是更快更好。客户可能不会提出您的服务有多快,但他们肯定会让您知道它是否很慢。, 分担负载:反向代理的好处,反向代理的另一个优点,我知道我在这里堆积它,但是如果您正在运行具有大量服务器请求的业务,负载平衡仍然很重要。抱歉,不抱歉。这里又出现了一个比喻。,想象一下,您的一个农场(又名服务器)正在接收大量请求。您的反向代理警卫塔使用负载平衡将请求发送到不同的服务器或场,以保持实例数量均匀分布,从而为客户端请求保持相同的质量和及时的服务。,因此,与其让一个农场试图跟上所有请求并及时提供新鲜作物,不如通过反向代理警卫塔在所有农场之间平均分配劳动力。它将请求发送回客户或旅行商人,他们不知道农场的确切位置,但他们知道他们正在满足请求,因此他们对您王国的内部运作并不知情。,虽然我们正在深入学习不同类型的 Web 代理服务器,但我应该提到其他类型。, 匿名代理服务器,这些是您所期望的名称。它表明它是一个代理服务器,而不会让您的 IP 地址受到潜在威胁。该服务器的好处是它可以阻止那些讨厌的定向广告。您必须检查您的搜索引擎设置以确保它没有捕获该数据以确保。此代理服务器将有助于确保您的身份安全和您的搜索私密。, 扭曲代理服务器,这些似乎是最有趣的。类似于匿名代理:这些服务器发送一个错误的IP 地址,使您看起来像是来自不同的位置。偷偷摸摸的,对吧?, 高匿名代理服务器,认为这些也很狡猾吗?它伪装成的 IP 地址不断变化,以使数据窃贼失去踪迹。, 透明代理服务器,与其他人相比,您的安全性最少,并且更多地用于公共内容过滤。这些代理服务器对于您希望完全透明的学校、社区中心或图书馆等空间更有用。在这种情况下,监控连接到互联网的公共设备但阻止对儿童不安全的内容是有意义的。,Web 代理服务器比您想象的要多得多,对吧?在为您的家人或企业提供正确的隐私或透明度方面,没有捷径可以做出正确的决定。在接下来的几年里,我们几乎可以保证会有更多类型的 Web 代理服务器。, 附加说明:嘿,这是小事!,我知道你的大脑已经快要被你已经学过的所有知识爆裂了,但你可能需要注意一些网络人寿保险的质量,以便你的客户知道你就是你所说的那个人,你是一个安全的网站。, DDNS(动态域名系统),那个网站又叫什么名字?创建网站时首先要考虑的事情之一不仅是它将拥有什么内容,还有它的名称。虽然,是的,您希望信息受到保护,但您还希望您的客户能够通过搜索引擎找到您。,设置动态 DNS就像在您的伪装 IP 地址上加上一个名称。这样,虽然你很容易找到,但你更难窃取。我们建议对 DDNS 进行更多研究,因为根据您的域托管位置会有不同的设置说明。, SSL 证书(安全套接字层认证),这些是标准,尤其是对于企业而言。SSL 证书的工作方式与 Twitter 上的“已验证”复选标记相同,它告诉访问网站的人你就是你所说的那个人。您可能已经猜到这就是 DDNS 和 SSL 证书通常齐头并进的原因。您需要一个可识别的网址的 DDNS和一个SSL 认证,让客户或访问者知道您是合法的。,旁注:SSL 证书还具有加密优势。在实施动态dns ssl 证书时,您需要查看您的网络托管服务提供的内容。, 你的数字王国是什么?神圣的寺庙还是公园?,虚拟世界正在发展和变化。这可能令人兴奋,但它也为机器人、黑客等寻找新方法来寻找我们的位置和窃取我们的信息开辟了新的可能性。每一个推出的新设备都可以揭示更多关于我们的数据。3D 空间识别在手机中变得越来越普遍,我们佩戴在身上的设备可以监测我们的心跳、血糖和体重。, ,在这个数字时代导航可能令人生畏,从无休止地研究特定电影,在社交媒体上滚动厄运,用最新的用餐体验更新我们的追随者和朋友,以及用点赞或连锁表情符号认真回应每条评论。每次我们点击进入,我们都冒着将我们的个人信息王国暴露给数据窃贼的风险。,每个可以连接到互联网的设备都有一个 IP 地址。想想看,那是你的手机、笔记本电脑、智能手表、游戏机。每次我们购买连接到网络的新设备时,我们都会增加泄露信息的风险。,
反向代理服务器(或反向代理)促进用户对 Web 服务器/应用程序服务器的请求和服务器的响应。负载均衡器接收用户请求,将它们相应地分配给一组服务器,然后将每个服务器的响应转发给其各自的用户。从上面的简要定义可以看出,反向代理和负载均衡器有一些重叠的功能。,,例如,它们都充当在客户端-服务器模型中转发请求和响应的中间节点。虽然它们在表面上看起来相似,但它们是两种不同的架构,在网络安全中扮演着不同的角色。本文详细解开反向代理和负载均衡器之间的差异,以消除两者之间的任何混淆。,反向代理服务器是用户和 Web 服务器之间的中间设备或应用程序。反向代理是一种代理服务器,旨在通过确保用户永远不会与原始服务器直接通信来增强 Web 服务器的安全性。,典型的反向代理操作如下:,反向代理从它们的配置方式接收它们的名称——“反向”到标准代理服务器(或正向代理)。正向代理位于用户和 Internet 之间,而反向代理位于网络边缘和 Internet 之间。,反向代理有硬件和软件两种形式。,有许多流行的开源反向代理软件解决方案,例如:,Web 应用程序防火墙 (WAF) 是一种反向代理,通常部署在商业用例中。WAF 监控 Web 流量并保护组织的 Web 应用程序免受网络攻击,例如SQL 注入、敏感数据盗窃、跨站点脚本和其他漏洞。另一种类型的反向代理是第 7 层负载均衡器。第 7 层负载均衡器将 Web 请求分发到多个服务器,以提高客户端网络性能和用户体验。,,虽然反向代理的主要目标是保护服务器端操作,但它的功能为客户端和服务器都提供了好处。, 增强的安全性, 负载均衡,组织可以使用反向代理在多个后端服务器之间均匀高效地分配流量。负载平衡有助于防止站点关闭,因为在发生网络中断或 DDoS 攻击时,流量可以重新路由到备用服务器(而不是依赖于一台服务器)。, 网络加速,反向代理可实现更快的 Web 服务器响应时间,改善站点加载时间和用户体验。他们使用各种网络加速技术来实现更高的速度。,由于代理充当SSL连接的端点而不是 Web 服务器,因此 Web 服务器可以更快地提供内容。,负载均衡器充当用户和一组服务器之间的中介。负载平衡器用于减轻高流量服务器的压力。它们将客户端请求路由到最合适的服务器,从而最大限度地提高网络速度和效率。通过确保运营效率,负载平衡器可帮助组织为其 IT 基础架构建立可扩展的基础。,通常,负载均衡器的操作如下:,虽然上面的示例解释了负载均衡器如何处理 Web 请求,但负载均衡器可以支持许多其他协议,具体取决于它们的类型。负载均衡器选择将用户请求转发到哪个服务器的方式取决于它使用的算法。,, 负载平衡算法,负载平衡算法是一组规则,用于确定在一组不同的服务器中选择哪个服务器。,有几种类型的负载平衡算法。,负载均衡器按照它们使用的数字系统以及它们运行的开放系统互连 (OSI) 模型的特定层进行分类。, 数字系统负载均衡器, 硬件负载平衡器设备,硬件负载平衡器设备通常在数据中心中找到。它们是通常在传输层 (L4) 或应用层 (Layer 7) 上运行的物理设备。, 软件负载均衡器 (SLB),软件负载平衡器可作为负载平衡器即服务 (LBaaS) 购买,例如,作为应用交付控制器 (ADC) 的一个功能,或者可以直接安装到服务器上。, OSI 层的负载均衡器, 应用程序负载均衡器(7 级负载均衡器或反向代理),应用程序负载均衡器在 OSI 模型的第 7 层(最高层)上运行。它根据应用程序级变量(例如 URL、HTTP 标头和 SSL)分发 Web 请求。第 7 层负载均衡器是一个反向代理,因为它处理应用程序级别的请求——HTTP 运行的层。, 网关负载均衡器,网关负载平衡器在第 3 层 (L3) 上运行。由于所有流量都流经一个入口和出口点,因此易于扩展。, 全局服务器负载均衡器,全局服务器负载均衡器可以连接到世界各地的服务器。它响应来自地理上最接近请求用户的服务器的用户请求。, 网络负载均衡器(四级负载均衡器),网络负载平衡器在第 4 层 (L4) 上运行。它根据网络变量分配流量,包括 IP 协议、源 IP、源端口、目标 IP 和目标端口。,,负载平衡器能够在多个高流量服务器之间有效地分配用户请求的能力为客户端-服务器模型提供了许多互惠互利的好处。, 增强的用户体验,负载均衡器执行健康检查以识别服务器中断,然后将用户流量重新路由到正常运行的服务器。他们通过拦截给用户的错误响应消息或向服务器发送直接请求来进行健康检查,这些请求需要特定的响应来表明服务器是健康的。负载均衡器在服务器错误事件中的干预意味着用户体验到的错误消息要少得多并避免响应延迟。, 更高的可靠性,负载均衡器在多服务器部署中实现,确保请求均匀高效地分布。通过防止服务器过载和流量瓶颈,负载均衡器为用户提供了更高的可靠性。许多服务器而不是单个服务器的可用性确保了用户请求仍然得到满足,即使在发生中断的情况下也是如此。, 会话持久性,由于HTTP/S是一种无状态协议,会话持久性并不直观,但对于许多应用程序有效执行而言是必需的。例如,电子商务网站等 Web 应用程序依靠会话持久性来保持购物篮处于活动状态。负载平衡器确保特定用户(即来自特定 IP 地址)的请求在会话期间始终发送到同一台服务器。,反向代理和负载均衡器都提高了应用交付网络的性能,但它们在这种优化中扮演的角色并不完全相同。反向代理特别是 7 级负载均衡器,专门处理 Web 请求。负载均衡器可以在 OSI 模型的 3-7 级上运行,在 Web 请求之上处理多种类型的请求,例如 DNS、SSL、TCP。,反向代理可以执行负载均衡器的其他角色。例如,反向代理还可以:,负载均衡器的主要作用是将用户请求分发到多个服务器。反向代理可用于促进用户和单个服务器之间的请求。, ,反向代理服务器(或反向代理)促进用户对 Web 服务器/应用程序服务器的请求和服务器的响应。负载均衡器接收用户请求,将它们相应地分配给一组服务器,然后将每个服务器的响应转发给其各自的用户。从上面的简要定义可以看出,反向代理和负载均衡器有一些重叠的功能。,反向代理从它们的配置方式接收它们的名称——“反向”到标准代理服务器(或正向代理)。正向代理位于用户和 Internet 之间,而反向代理位于网络边缘和 Internet 之间。,
配置美国服务器的反向代理与负载均衡,I. 反向代理与负载均衡的基本概念,A. 反向代理的定义,反向代理是一种位于服务器前的代理服务器,它充当Web服务器网关的角色,接收来自互联网的客户端请求,然后将这些请求转发到内部网络的正确服务器上,其主要作用是提高安全性、缓存静态内容以及负载均衡等。,B. 负载均衡的定义,负载均衡是指在多台服务器之间分配工作负载,以优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单一服务器的过载,使用负载均衡器可以确保当一台服务器出现故障时,流量可以被重新路由到健康的服务器上,从而提高整体系统的可用性。,II. 准备工作,A. 选择适当的服务器硬件,在选择用于反向代理和负载均衡的服务器硬件时,需要考虑CPU性能、内存容量、网络带宽和存储速度,对于高流量网站,建议选择至少具有16核心的CPU、64GB以上的RAM、1Gbps的网络连接和SSD存储以减少I/O延迟。,B. 确保服务器的安全设置,安全设置包括更新操作系统和软件到最新版本,配置防火墙规则以限制不必要的入站和出站流量,以及设置SSH密钥认证来增强远程访问的安全性。,C. 服务器的网络配置,网络配置需要确保服务器拥有公网IP地址,并且域名解析正确指向该IP,应配置冗余网络接口以防单点故障,并确保网络设备支持所需的带宽和流量处理能力。,III. 安装和配置反向代理服务器,A. 选择反向代理软件(如Nginx, Apache),根据需求选择适合的反向代理软件,Nginx以其高性能和低资源占用而闻名,适合处理大量并发连接,而Apache则提供丰富的模块和灵活性。,B. 安装反向代理软件,以Nginx为例,可以通过官方仓库或源码编译安装,在Ubuntu系统中,可以使用 sudo aptget install nginx命令进行安装。,C. 配置反向代理规则,在Nginx中,编辑配置文件(通常位于 /etc/nginx/sitesavailable/default),设置 proxy_pass指令指向后端服务器的地址和端口,将请求转发到本地的8080端口: proxy_pass http://localhost:8080;。,D. 测试反向代理配置,完成配置后,重启Nginx服务( sudo service nginx restart)并使用工具如curl或浏览器验证反向代理是否按预期工作,访问Nginx服务器的IP地址或域名,确认是否能看到后端服务器的响应内容。,IV. 安装和配置负载均衡器,A. 选择负载均衡器软件(如HAProxy, nginx),根据性能需求和特性选择负载均衡器软件,HAProxy是一个专业的负载均衡器,支持多种负载均衡算法,而Nginx也可以作为负载均衡器使用,且配置相对简单。,B. 安装负载均衡器软件,以HAProxy为例,在Debian或Ubuntu系统上,可以通过 sudo aptget install haproxy命令安装,对于Nginx,如果之前已安装,可能需要添加额外的模块支持。,C. 配置负载均衡策略,在HAProxy中,编辑配置文件(通常位于 /etc/haproxy/haproxy.cfg),定义前端监听端口、后端服务器列表以及负载均衡算法,使用轮询算法(round robin):,D. 测试负载均衡配置,重启HAProxy服务( sudo service haproxy restart)后,使用多个客户端同时发起请求到负载均衡器的IP地址或域名,观察请求是否均匀分配到后端服务器,可以使用工具如JMeter进行压力测试,验证负载均衡效果。,V. 监控和维护,A. 实施监控工具(如Nagios, Zabbix),部署监控工具以实时跟踪服务器的性能指标,如CPU使用率、内存占用、网络流量和磁盘I/O,使用Zabbix可以轻松创建监控模板并设置阈值告警,当服务器负载过高或其他异常情况发生时及时通知管理员。,B. 定期检查日志文件,定期审查Nginx或HAProxy的日志文件可以帮助发现潜在的问题,检查Nginx的错误日志(通常位于 /var/log/nginx/error.log)以识别配置错误或客户端请求问题。,C. 更新和升级软件以保持最新状态,定期更新反向代理和负载均衡器软件及其依赖库以修复已知的安全漏洞和性能问题,使用 sudo aptget update和 sudo aptget upgrade命令来更新Ubuntu系统上的软件包,关注软件官方发布的通知,以便及时应用重要的安全补丁。, ,frontend httpin bind *:80 default_backend servers backend servers balance roundrobin server server1 192.168.1.2:80 check server server2 192.168.1.3:80 check,