针对nginx,来具体聊聊正向代理与反向代理 (转载)
https://www.sohu.com/a/235704408_468627
先来说说什么是代理服务器?
所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。
如果你对这句话还不是特别了解,那么接下来我们就详细聊聊正向代理和反向代理的区别。
正向代理
假如你常用的电脑想通过google搜索一个关键词“hello world”,但是国内现在不允许访问google一下,所以你访问不了。
但,假如你现在有一台国外服务器可以访问google,于是出现了这种情况:
于是你想到,我的电脑直接远程控制这台服务器就能google啦,虽然有点麻烦。时间久了你就可能觉得每次远程时间挺累的事情,于是你又想,能不能我的电脑访问这台服务器,然后这台服务器去帮我请求google,然后把请求到的数据返回给我。设想是这样的:
这个过程其实就是正向代理!!
那么问题来了,怎么才能让我的这台服务器接受在我搜索hello world的时候自动帮我去访问google呢?你想到nginx好像有正向代理的功能,于是按照了nginx,并配置相关信息:
其中:resolver配置DNS解析IP地址,比如 Google Public DNS。(图例只是个例子,不是google dns)这时候,你在浏览器上配置上代理服务器地址和81端口,浏览器就会自动把请求转给代理服务器实现传说中的“FQ”啦。
来看看小飞机的FQ代理:
总结来了,想要实现正向代理,得配置一台转发请求的跳板服务器,同时客户端还得配置跳板服务器的代理地址。google是不知道访问的是我的电脑,只知道是我代理服务器。所以,如果当黑客去黑别人的网站,同时不想让网站追踪到你的ip地址,你就可以操控一台代理服务器去代替你攻击,这就是传说中的“肉鸡”啦!
反向代理
回顾一下上篇内容,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
所以:反向代理与正向代理是相对的。正向代理是替代客户端去发起请求,而反向代理是替代服务器接受客户端的请求。
有如下图例:
这时候这台代理服务器其实不掌握在我们用户手里了,而是google专门用来接受请求,同时还可以作为过滤不正常的请求,防止你们黑的的一个服务器。对我们客户端来说,不掌握在我手里的东西都是别人的,所以这台服务器是反向的,哈哈。
google有了这台代理服务器,我们客户端就接触不到他的真正服务器。google内部可以做微服务,代理服务器可以根据url转发到不同的内部服务器。
nginx的配置上你可以通过指定不同的url前缀跳转到不同的服务器哈~
一句话总结
好了,如果你还不理解。最后我就要放大招了,一句话:假如说正向代理是黑客手里的攻击长矛,反向代理就是google握着的一个盾牌,相互撕杀,谁也不知道是对方是谁!!
借用网友的一张神图作为结尾:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2014-12-17 SpringMVC处理MySQL BLOB字段的下载
2014-12-17 SpringMVC处理MYSQL BLOB字段的上传
2014-12-17 Linux中MySQL数据库max_allowed_packet的调整
2014-12-17 错误The request sent by the client was syntactically incorrect ()的解决