图解「正向代理」的原理 + 实践应用

悟空聊架构 发表于 8月以前  | 总阅读数:271 次

本文主要内容如下:

在工作中经常和正向代理和反向代理打交道,有必要总结下正向代理的原理和实践应用了。(反向代理安排在下篇吧)

如何理解正向代理

代理(Proxy)服务通常被我们称为正向代理服务,如下图所示:

  • 客户端:图中的客户端我用电脑和手机作为示意,客户端指在计算机网络中与服务器进行通信的一种计算机程序或设备。客户端通常请求服务器提供某种服务,如获取网页、发送电子邮件、下载文件等。客户端与服务器之间的通信通常遵循客户端-服务器模型,其中客户端发出请求,而服务器响应这些请求。
  • 站点:可以理解为网络中的目标服务器,当客户端想要访问目标服务器的资源时,需要通过网络通信才能获取到资源。
  • 正向代理服务器:在客户端和站点之间,起到了一个转发请求的作用。正向代理服务器不支持外部对内部网络的访问请求。正向代理服务器和客户端是紧密联系的,我们工作中用到的 VPN(虚拟专用网络) 就是一种正向代理的方式。
  • 箭头:箭头的方向代表访问的方向。

大白话聊聊正向代理

一位企业老总,他有一位助理小李,当老总想要订火车票时,就会委托小李帮忙订票,当老总想要订酒店时,小李就会负责查找合适的酒店并安排老总入住。助理小李帮老总办了很多事情,也就是代理了一些事情,而助理小李就充当了一个代理服务器的角色。如下图所示:

正向代理的作用

企业可以使用正向代理来增强网络安全、访问控制、性能优化和隐私保护等方面的功能。以下是企业中如何使用正向代理的一些常见场景和方法:

  • 远程办公: 在远程办公环境中,企业可以使用正向代理来帮助员工安全地连接到公司内部网络,访问内部资源,而不必暴露公司的内部网络直接在互联网上。
  • 访问控制和安全性: 企业可以在其网络中部署正向代理服务器,以实施访问控制策略。通过正向代理,可以限制员工访问特定网站或互联网资源,从而减少潜在的网络威胁。这有助于保护企业免受恶意软件、恶意网站和网络攻击的影响。
  • 内容过滤和缓存: 正向代理可以用于过滤和缓存网络内容,以提高性能并减少带宽消耗。代理服务器可以缓存常用的资源,例如网页、图像和视频,从而减少对外部服务器的请求,提高用户体验。
  • 安全审计和监控: 企业可以使用正向代理来监视员工的网络活动,以确保合规性和安全性。代理服务器可以记录访问日志,以便后续的安全审计和监控。
  • 反病毒和恶意软件保护: 正向代理可以用于检测和拦截网络流量中的恶意软件、病毒和恶意链接。这有助于保护企业内部网络免受恶意软件的传播和感染。
  • 隐私保护: 企业可以使用正向代理来保护员工的隐私。代理服务器可以隐藏员工的真实IP地址,从而提高员工的在线隐私。
  • 访问受限资源: 有些企业需要访问特定地理位置或IP受限的互联网资源。正向代理可以用于绕过这些限制,以访问需要的资源。
  • 负载均衡: 企业可以使用正向代理来实现负载均衡,将客户端请求分发到多个服务器,以提高性能和可用性。这对于高流量的企业应用程序和网站非常有用。

企业中如何使用正向代理

在企业中,正向代理工具用于多种场景,以增强网络安全性、访问控制、性能优化和隐私保护。以下是一些常见的正向代理工具和它们在不同场景中的用途:

  • Nginx: Nginx 是一款高性能的反向代理服务器,但也可以配置为正向代理。它通常被用于负载均衡、访问控制和内容缓存。
  • 自建VPN: 一些企业和个人选择自行搭建虚拟私人网络(VPN)来实现正向代理功能。这可以通过使用开源VPN软件如OpenVPN或商业VPN服务来实现。
  • CDN服务: 一些CDN(内容分发网络)服务提供商也提供正向代理功能,以加速访问、缓存内容和提供安全性。
  • Squid: Squid 是一个开源的代理服务器软件,被广泛用于企业和学校网络中。它提供了强大的访问控制、缓存和性能优化功能,常用于网络管理和内容过滤。
  • CCProxy(若快代理服务器): CCProxy 是一款商业代理服务器软件,又称为"若快",它提供了访问控制、带宽控制和网络加速功能。
  • TinyProxy: TinyProxy 是一个轻量级的代理服务器软件,适用于小型网络环境。它的配置相对简单,适合快速搭建正向代理。
  • Glype: Glype 是一个基于Web的代理脚本,可以让用户通过浏览器访问被封锁的网站。它常被用于构建Web代理服务,以绕过互联网审查。

项目中如何使用正向代理

以下是一个 Nginx 的正向代理的配置,

http {
    server {
        listen       80;
        server_name  www.passjava.cn;

        location / {
            proxy_pass http://target_server;
            proxy_set_header Host $host;
        }
    }
}

上述配置表明当客户端通过浏览器或其他方式发送请求到 www.passjava.cn 这个域名时,Nginx 将监听 HTTP 请求的端口 80,并将这些请求代理到 target_server 指定的目标服务器。这是一个典型的正向代理配置,用于隐藏客户端的真实 IP 地址,同时将请求转发到其他服务器上。这在一些网络安全和访问控制方面非常有用。

真实场景的一个应用

我们项目中大量使用 Nginx 作为正向代理和反向代理,这里举一个我用 Nginx 作为正向代理的真实案例。

背景

公司生产一些硬件设备,而这些设备在生产的过程中,需要调用我们后台系统的接口,我们后台系统所在的网络和设备的网络并不在同一个网段内,想要实现网络互通,我们在设备和系统之间加了一层正向代理服务器,设备先将请求发送给代理服务器,由代理服务器将请求转发给后台系统。

解决方案

如下图所示:

设备 1 和设备 2 的 IP 在 192.168.1.0/24 IP 地址段内,HTTP 请求先发到代理服务器,然后转发到后台服务器集群的网关地址(192.168.52.123)。

代理服务器上有两个网卡,和设备之间的网络是通的,和服务器集群之间的网络也是通的。这样就能保证设备的请求能够正常发送到系统了。疑问:为啥不把后台系统的服务器 IP 改成和设备同一网段?

答:问题出在不能保证设备和后台系统在同一局域网内。有的设备是在其他局域网内生产的,即使在同一个网段内,但是是跨局域网的,设备和后台系统也是无法连通的。

完整的 NGINX 配置如下:

正向代理后如何获取真实 IP

另外我们的系统还需要获取设备的真实 IP,这就需要在 Nginx 加上配置:

# location 模块中加入以下配置:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

上述配置可以暴露客户端的真实 IP 地址给目标服务器,特别是 proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这两行配置。

让我解释一下这三行配置的含义:

  1. proxy_set_header Host $host;:这一行配置将客户端请求中的 Host 头部信息传递给目标服务器。这是正常的 HTTP 头部信息传递,不涉及客户端 IP 地址。
  2. proxy_set_header X-Real-IP $remote_addr;:这一行配置将客户端的真实 IP 地址作为 X-Real-IP 头部信息传递给目标服务器。这意味着目标服务器可以访问到客户端的真实 IP 地址。
  3. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:这一行配置将客户端的 IP 地址添加到 X-Forwarded-For 头部信息中,并传递给目标服务器。这是为了记录代理请求的前几个客户端的 IP 地址,通常包括客户端的真实 IP 地址。

当目标服务器收到这些头部信息时,它可以通过 X-Real-IPX-Forwarded-For 头部来获取客户端的真实 IP 地址。

容易误以为的正向代理

比如我的网站项目 passjava.cn,项目是纯静态页面,部署在了一台服务器上。如下图所示,当我在浏览器访问这个域名时,请求会先经过 DNS 域名解析,拿到域名绑定的 IP 地址,而这个 IP 地址又是我购买的云服务器地址,在这个服务器上有网站的静态页面。

以下是 Nginx 的配置:

server {
    listen       80;
    server_name  www.passjava.cn;

    location / {
        root   /home/ubuntu/docs;
        index  index.html;
    }
}

我开始以为这是一个正向代理的配置,其实并不是,这个配置只是一个简单的虚拟主机配置,用于托管静态网站。这个配置定义了一个 Nginx 虚拟主机,用于处理来自 www.passjava.cn 域名的 HTTP 请求,并提供静态网页。

解释下这些配置项含义:

  1. server { ... }:这是一个 server 块,用于定义一个虚拟主机。每个 server 块通常用于配置一个不同的虚拟主机,以处理特定域名或 IP 地址的请求。
  2. listen 80;:这一行指定了监听的端口号,这里是 80,表示该虚拟主机将处理来自客户端的 HTTP 请求,这是 HTTP 的标准端口号。
  3. server_name www.passjava.cn;:这一行定义了虚拟主机所处理的域名。在这个例子中,虚拟主机将处理来自 www.passjava.cn 域名的请求。当客户端发送请求到这个域名时,Nginx 将使用这个 server 块中的配置来响应请求。
  4. location / { ... }:这是一个 location 块,它定义了如何处理特定 URI(统一资源标识符)路径的请求。在这里,location / 匹配所有请求的根路径。
  5. root /home/ubuntu/docs;:这一行指定了 Nginx 服务器上要提供的文件的根目录。当客户端请求根路径时,Nginx 将在 /home/ubuntu/docs 目录中查找文件来提供给客户端。
  6. index index.html;:这一行指定了默认的索引文件,当客户端请求的路径是一个目录时,Nginx 将尝试提供 index.html 文件作为默认文档。如果 /home/ubuntu/docs 目录中存在 index.html 文件,它将作为默认文档提供给客户端。

注意:正向代理配置通常涉及将客户端的请求代理到其他服务器,而不是提供自己的网页内容。正向代理的配置会包括一些额外的代理设置,用于将请求转发到目标服务器,而不是提供本地静态文件。

本文由微信公众号悟空聊架构原创,哈喽比特收录。
文章来源:https://mp.weixin.qq.com/s/v_do73K91_CXQZTIRlPZeA

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:8月以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:8月以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:8月以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:8月以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:8月以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:8月以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:8月以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:8月以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:8月以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:8月以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:8月以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:8月以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:8月以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:8月以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:8月以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:8月以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:8月以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:8月以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:8月以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:8月以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  236905次阅读
vscode超好用的代码书签插件Bookmarks 1年以前  |  7095次阅读
 目录