Nginx正向代理和反向代理详解
一、什么是正向代理
在正常的情况下,国内的网络是访问不了google,youtobe的,但是如果我配置一个代理或者使用一个代理软件,就可以访问了。这个代理软件就是做了正向代理。就相当于是我们去商场买东西,但是商场里的东西都是代理的工厂的货,或者你也可以理解为现在流行的海外代购,那些海外代购的人就是帮我们的正向代理。如下:
正向代理:代理的是客户端。 正向代理:代理的是客户端。二、什么是反向代理
反向代理就是代理服务器的,比如我们去4S店买车,一家4S店可以会代理多个汽车厂商的车或者代理一家汽车厂商,我们在4S店下单,至于4S店从哪家生产线上哪家工厂买的货我们不必关心。这个4S店对工厂来说就是反向代理。
反向代理代理的是服务器端 反向代理代理的是服务器端三、什么会有正向代理和反向代理
要问为什么会有正向代理和反向代理,那就看他们解决了什么问题?正向代理解决了外网访问不到的问题,反向代理解决了保护内部服务器,负载均衡,能够扛得住大流量的问题。
四:正向代理和反向代理的区别是什么
正向代理和反向代理的根本区别是所代理的对象不同。
正向代理代理的是客户端;反向代理代理的是服务器端。
正向代理中,proxy和client同属一个LAN,对server透明。
反向代理中,proxy和server同属一个LAN,对client透明。
五、代理和反向代理的使用场景
正向代理使用场景:
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!
(1):保护并隐藏内网服务器
(2):内网可以使用集群,而代理可以同时配置并起到负载均衡的作用
六、Nginx的关于正向代理和反向代理的配置
正向代理配置配置两个server节点,一个用来处理HTTP转发,一个用来处理HTTPS转发,而客户端都通过HTTP来访问,通过访问代理不同的端口,来区分HTTP和HTTPS请求。
反向代理配置:
反向代理的配置不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以,当然也可以另写一个配置文件,然后include就可以(还是建议另写一个文件,然后包含它的方式),例子如下:
反向代理配置七、Nginx的正向代理和反向代理的原理
1:反向代理的工作原理
反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内服服务器集群的负载均衡器。
a、作为内容服务器的替身
如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,或者与银行专线网络连接的服务器,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内部服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部收到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。
当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(下面的图),如果内容服务器返回错误信息,代理服务器会先行截取该消息并更改标头中列的任何URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向URL。
这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。
可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。
b、作为内容服务器的负载均衡器
其实在上面的代理服务器中可以配置负载均衡,这样即使Web服务器收到大量的请求,也可以使用代理服务器分担Web服务器的负载并提高网络访问率。
Nginx的配置如下:
上面是一个服务器,也可以配置多个,指令upstream 就是起到了负载均衡的作用。
2:正向代理的工作原理:
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。