针对nginx,我们来具体聊聊正向代理与反向代理区别

上一篇文章你还是要阅读一下滴~

全面了解 Nginx 到底能做什么

先来说说什么是代理服务器?

所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。

如果你对这句话还不是特别了解,那么接下来我们就详细聊聊正向代理和反向代理的区别。

正向代理

假如你常用的电脑想通过google搜索一个关键词“hello world”,但是国内现在不允许访问google一下,所以你访问不了。

但,假如你现在有一台国外服务器可以访问google,于是出现了这种情况:

于是你想到,我的电脑直接远程控制这台服务器就能google啦,虽然有点麻烦。时间久了你就可能觉得每次远程时间挺累的事情,于是你又想,能不能我的电脑访问这台服务器,然后这台服务器去帮我请求google,然后把请求到的数据返回给我。设想是这样的:

这个过程其实就是正向代理!!

那么问题来了,怎么才能让我的这台服务器接受在我搜索hello world的时候自动帮我去访问google呢?你想到nginx好像有正向代理的功能,于是按照了nginx,并配置相关信息:

其中:resolver配置DNS解析IP地址,比如 Google Public DNS。(图例只是个例子,不是google dns)这时候,你在浏览器上配置上代理服务器地址和81端口,浏览器就会自动把请求转给代理服务器实现传说中的“翻墙”啦。

来看看小飞机的翻墙代理:

总结来了,想要实现正向代理,得配置一台转发请求的跳板服务器,同时客户端还得配置跳板服务器的代理地址。google是不知道访问的是我的电脑,只知道是我代理服务器。所以,如果当黑客去黑别人的网站,同时不想让网站追踪到你的ip地址,你就可以操控一台代理服务器去代替你攻击,这就是传说中的“肉鸡”啦!

反向代理

回顾一下上篇内容,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

所以:反向代理与正向代理是相对的。正向代理是替代客户端去发起请求,而反向代理是替代服务器接受客户端的请求。

有如下图例:

这时候这台代理服务器其实不掌握在我们用户手里了,而是google专门用来接受请求,同时还可以作为过滤不正常的请求,防止你们黑的的一个服务器。对我们客户端来说,不掌握在我手里的东西都是别人的,所以这台服务器是反向的,哈哈。

google有了这台代理服务器,我们客户端就接触不到他的真正服务器。google内部可以做微服务,代理服务器可以根据url转发到不同的内部服务器。

nginx的配置上你可以通过指定不同的url前缀跳转到不同的服务器哈~

一句话总结

好了,如果你还不理解。最后我就要放大招了,一句话:假如说正向代理是黑客手里的攻击长矛,反向代理就是google握着的一个盾牌,相互撕杀,谁也不知道是对方是谁!!

借用网友的一张神图作为结尾:

原文发布于微信公众号 - java思维导图(java-mindmap)

原文发表时间:2018-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏QQ音乐前端团队专栏

Vue打包优化之code spliting

如果我们对所有的代码进行合理的拆分,将首屏和非首屏的代码进行剥离,将业务代码和基础库代码进行拆分,在需要某段代码的时候再加载它,下次若再需要用则从缓存中读取.....

564100
来自专栏SDNLAB

OVN实战二之Overlay实现

前言 上一章介绍了GNS3的使用以及OVN系统的架构,搭建了实验环境,阐述了OVN各个进程的用途、彼此之间的关系,以及产生的日志(OVN实战一之GNS3操作指南...

406120
来自专栏玄魂工作室

​ kali linux 渗透测试 之 DNS信息收集

从本节开始,我们从头开始,系统的学习基于Kali Linux的web应用渗透测试。

33930
来自专栏along的开发之旅

文加图, 理解Http请求与响应

在讲解OkHttp之前, 我们首先来个高清大图, 看下http请求的整个步骤, 有个整体概念.

11720
来自专栏信安之路

安全开发之 token 那些事

在开发网络应用时,不管是移动端的 APP 也好,还是 web 端 APP 也好,只要有用户群体存在,都绕不开身份认证这个话题,选择一种好的身份认证方法常常在应用...

13400
来自专栏BeJavaGod

基于Spring 4.0 的 Web Socket 聊天室/游戏服务端简单架构

在现在很多业务场景(比如聊天室),又或者是手机端的一些online游戏,都需要做到实时通信,那怎么来进行双向通信呢,总不见得用曾经很破旧的ajax每隔10秒或者...

40660
来自专栏xingoo, 一个梦想做发明家的程序员

Apache 性能调优-参考篇

1 内存 适当选用适合大小的内存,保证谷峰负载时,有足够的内存使用 2 使用ab测试apache性能 ab -n 1000 -c 1...

21250
来自专栏FreeBuf

图解Meterpreter实现网络穿透的方法

纵向防御也被被称为为“多层防御”,这样的概念被运用于“信息安全”上。以多层电脑安全技术去减轻其风险,在其中有些电脑被入侵或是泄密时,风险可大大降低。 举例说明,...

23660
来自专栏代码GG之家

搭建安卓系统源代码编译环境

今天分享下月亮大神整理的,android源码环境搭建,让开始学习android的同学,可以少走弯路,快速上手。 安卓源码编译环境搭建教程: 1.打造自己的And...

45680
来自专栏Golang语言社区

selec/poll中的读写事件和epoll中的读写事件

在Linux网络编程中,常常使用select和poll来做事件触发,监听socket的读写状态,然后进行读写操作。现在新的linux内核中,增加了epoll事件...

36340

扫码关注云+社区

领取腾讯云代金券