代理和反向代理

Posted yuwensong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代理和反向代理相关的知识,希望对你有一定的参考价值。

一、背景介绍

nginx (engine x) 是一个高性能的HTTP和反向代理服务器,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二.知识剖析

1.代理服务器

一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。 一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。 Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。HTTP的代理服务器即是Web服务器又是Web客户端。


2.正向代理


正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。


3.反向代理

反向代理 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。在服务器端接受客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。

4.反向代理的实现

1)需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上;
2)服务器返回自己的服务到负载均衡设备;
3)负载均衡将服务器的服务返回用户;

 

三.常见问题

1.正向代理和反向代理有什么区别

2.为什么使用反向代理

四.解决方案

答:1.两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端。

答:2.便于服务器分布扩展。在实际中单个服务器处理客户端请求能力有一个极限,当请求量过大,则服务器忙不过来,因此使用多个服务器来共同分担用户的请求处理,这些服务器提供相同的服务,对于用户来说没有差别。那么就需要一个负载均衡设备来分发用户的请求到空闲的服务器上,然后服务器返回结果到负载均衡设备上,负载均衡再将其返回给用户。这样当增加/移除某台服务器时,只需要修改负载均衡的服务器列表,而不会影响服务器;安全。避免ip和端口直接暴露在internet,使主机免于被开采安全漏洞,代理服务器数量有限,安全防护更方便。

 

五.更多讨论

1. 负载均衡几种算法?

答:轮询(Round Robin)法,随机(Random)法,源地址哈希(Hash)法,加权轮询(Weight Round Robin)法,加权随机(Weight Random)法,最小连接数(Least Connections)法。

2.配置里面哪个server name什么意思?

答:

Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name指令在接到请求后的匹配顺序分别为:

1、准确的server_name匹配

2、以*通配符开始的字符串

3、以*通配符结束的字符串

4、匹配正则表达式:

3.反向代理和负载均衡有何区别?

答:反向代理是实现负载均衡的一种方法。先谈反向代理。用户在请求时,先把请求发送给代理的服务器,然后由代理服务器根据算法去请求真实的服务器,最后返回给用户。这种做法,其一是提高了安全性;其二是通过多台的real server分担了用户的请求,实现了负载均衡。再谈负载均衡。负载均衡的出现,是通过横向的扩展,尽可能地降低单台服务器的压力。常见WEB层面的负载均衡的方案有硬件F5、Nginx代理、LVS、各个云商的负载均衡服务(如AWS的ELB服务)等。负载均衡后面连的一般是实际提供服务的服务器,如通过ELB服务,可以做到流量的均匀分担,从而减少单机服务器的压力。

以上是关于代理和反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx正向代理与反向代理

如何理解反向代理的反向?

Nginx代理——正向反向代理,动静分离和负载均衡

Nginx的正向代理和反向代理

正向代理与反向代理

Nginx反向代理常用配置