首页 首页 云计算 查看内容

Nginx——正向代理和反向代理的区别

木马童年 2019-2-13 14:45 62 0

1、正向代理和反向代理的概念 无论是正向代理,还是反向代理,说到底,就是代理模式的衍生版本罢了。我们都学习过代理设计模式,都知道代理模式中有代理角色和被代理角色,为什么这么说,因为这两个角色对于我们理解 ...

1、正向代理和反向代理的概念

无论是正向代理,还是反向代理,说到底,就是代理模式的衍生版本罢了。我们都学习过代理设计模式,都知道代理模式中有代理角色和被代理角色,为什么这么说,因为这两个角色对于我们理解正向和反向代理非常重要,下面会讲到。

Nginx——正向代理和反向代理的区别

下面我将引入这样一个场景,很多时候我们上网的网速特别慢,或者说由于翻墙问题导致我们无法访问到国外的网站,通常这些情况我们会通过给浏览器配置一个网速快的、可以翻墙的代理ip及端口号来解决我们的问题,那么配置好之后,大概的请求流程如下图所示:

Nginx——正向代理和反向代理的区别

我们首先请求代理服务器,然后代理服务器帮我们去快速访问国外的网站,对于这种代理方式,我们就称之为正向代理。请记住,上面说到代理模式的两个角色中,我们当前的角色为被代理者,也就是浏览器这个角色。更重要的是,正向代理的本质是我们去请求外部的资源,如果以生产者、消费者模式来区分,我们属于消费者。

总结:

  • 正向代理,我们的角色是被代理者

  • 正向代理,我们不对外提供服务,反而是对外消费服务,属于消费者

反向代理,很显然,就是和正向代理相反,如果说正向代理是男,那么反向代理就是女了,亲,此处不再纠结其他情况!下面我用一副图片解释下反向代理:

Nginx——正向代理和反向代理的区别

看完上面的图片,请你想象一下这么一个场景,假设你现在是某公司技术总监,你们公司需要对外提供一套web服务,那么你打算怎么做呢?

答案是可以通过反向代理来完成。通常你们公司拥有自己的IDC机房,机房通讯通常采用局域网交换机,internet网用户请求是无法直接访问到局域网内的web服务的,因此这个时候,你需要一台反向代理服务器来接收internet web请求,然后将请求分发到局域网中的不同主机上进行处理,处理完成之后再做出响应。因此,反向代理大概就是这么一个场景。请记住,反向代理中,我们的角色是局域网 web服务。

总结:

  • 反向代理,我们的角色是局域网 web服务

  • 反向代理,我们对外提供服务,属于服务提供者

2、nginx正向代理和反向代理实例解析

nginx在正向代理方面的应用非常地少,因此,对于正向代理的相关配置指令也不多,下面是一个nginx作为正向代理服务器的配置实例,配置仅供参考。

server { resolver 192.168.1.1; #指定DNS服务器IP地址 listen 8080; location / { proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址 } } 复制代码

解释下上面的指令,resolver配置DNS服务器的ip地址,可以配置多个。你可能会问,正向代理中为什么需要配置DNS服务器的ip地址呢?其实答案很简单,你想象下假如现在你的浏览器配置了正向代理服务器,你现在在浏览器中输入http://oneSite.cn/index.html,根据正向代理原理,该url请求将会被正向代理服务器执行,问题来了,如果你的代理服务器不配置DNS解析服务,nginx怎么知道你这个oneSite.cn到底是个什么鬼,到底对应因特网的ip地址是什么?所以这就是需要配置resolver指令的原因所在。

listen指令配置nginx监听浏览器请求的端口号。

proxy_pass指令配置接收到被代理浏览器发来的请求之后,需要帮忙执行的请求是什么,$http_host$request_uri指明目的主机和uri,属于nginx变量,一般不需要修改。

nginx反向代理的相关配置如下,在这里小编搭建两个Spring boot小demo模拟上面反向代理的web服务,相关源代码可以在github获取。

Nginx——正向代理和反向代理的区别

demo工程启动端口号为8081,demo1工程启动端口为8082,对于所有的请求前缀带/demo的都将转发到demo工程进行处理,对于所有的请求前缀带/demo1的都将转发到demo1工程进行处理。

nginx配置如下:

server { listen 80; location /demo { proxy_pass http://127.0.0.1:8081; } location /demo1 { proxy_pass http://127.0.0.1:8082; } } 复制代码

启动demo和demo1两个工程之后,浏览器输入下面地址:

Nginx——正向代理和反向代理的区别

Nginx——正向代理和反向代理的区别

可以看到,外部统一使用80端口访问服务时,nginx根据路径前缀进行代理,然后返回执行结果。对于nginx反向代理路径配置有几点需要注意,使用时要非常谨慎。

上面proxy_pass指令配置的url为http://127.0.0.1:8081,注意在该url后面不能使用/demo1后缀进行代替,否则就报错了。为什么呢?首先nginx会判断proxy_pass指令中配置的url地址是否包含uri,如果在proxy_pass指令中配置的url地址不包含uri,那么nginx将会使用请求路径的uri进行转发,如果在proxy_pass指令中配置的url地址包含uri,则nginx会忽略请求location中的uri,转而使用你在proxy_pass中配置的uri进行覆盖,转发,另外,/也是一种uri,哈哈,要特别小心哈~

在不久的将来,多智时代一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏多智时代,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!

局域网
0
为您推荐
人算不如天算,数据驱动的云计算远超天算啦!

人算不如天算,数据驱动的云计算远超天算啦

在今天的世界, 一切业务数据化,一切数据业务化,只有这样才能迎接这个时代。所以我希…...

业务不到两年增速85%,是哪家公司这么厉害?

业务不到两年增速85%,是哪家公司这么厉害?

核心提示:自从2015年9月的OracleOpenWorld大会上推出全线的SaaS和PaaS产品以来,甲骨…...

打开企业云计算之门的利剑,不容错过?

打开企业云计算之门的利剑,不容错过?

在现实中,很多企事业单位的IT基础设施就处于此层次级别,即:只是采用了虚拟化技术去…...

云计算炙手可热,究竟是谁在背后?

云计算炙手可热,究竟是谁在背后?

核心提示:前不久,万达网络科技集团与美国IBM公司达成合作,借助IBM的云计算技术,进…...

云计算对数据进行智能分析,云计算核心技术有哪些?

云计算对数据进行智能分析,云计算核心技术

随着信息技术不断进步,闪存、磁盘、数据中心、DNA等各种新的存储技术不断出现。即便…...

“云”上存储日渐成熟, 那么最关键的是什么?

“云”上存储日渐成熟, 那么最关键的是什

展望未来,世界并不只是由公有或私有化技术组成,还有许多两者的混合体。因此势必会有…...

云计算开源呈现爆发式增长,如何使用云计算开源技术成为产业链关注的热点?

云计算开源呈现爆发式增长,如何使用云计算

近几年来,在云计算领域,开源技术呈现爆发式的增长,借用云计算领域的主流看法,这个…...

云计算提供了基础平台,云计算产业进入2.0

云计算提供了基础平台,云计算产业进入2.0

云计算引发了软件开发部署模式的创新,成为承载各类应用的关键基础设施,并为大数据、…...

私有云的建设是一个需要长期迭代的过程,我们都还在路上!

私有云的建设是一个需要长期迭代的过程,我

伴随着IT新技术的发展,像虚拟化、云计算和大数据对大家来说已经不再陌生了。在企业里…...

大家都要向云计算转型,为什么?

大家都要向云计算转型,为什么?

我们曾经开玩笑说硬件也要向云计算转型,软件也要向云计算转型,系统集成商也要向云计…...