反向代理

Posted by Liangyuqi on January 15, 2018
view times

一个栗子

有一个小朋友在家喜欢上网,但是家长害怕他上一些不符合社会主义核心价值观的网站,于是设置了防火墙,禁止访问一些有害的网站。

小朋友要想办法,凭什么不让我看,于是使用了代理服务器,这些代理服务器将禁止访问的网页打包好,然后再转交给小朋友,这就是正向代理

但是小朋友访问的不健康网站,每天都有数以万计的小朋友访问😊,网站不堪重负,处理客户端(用户)请求能力有一个极限,可以使用多个服务器来共同分担这么多的小朋友的请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别,这就是反向代理

正向代理概念

正向代理,也就是传说中的代理,他的工作原理就像一个跳板,

简单的说,

我是一个用户,我访问不了某网站,但是我能访问一个代理服务器

这个代理服务器呢,他能访问那个我不能访问的网站

于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容 代理服务器去取回来,然后返回给我

从网站的角度,只在代理服务器来取内容的时候有一次记录 有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站

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

1)用户希望代理服务器帮助自己,和要访问服务器通信,为了实现此目标,需要以下工作:

  • a) 用户IP报文的目的IP = 代理服务器IP
  • b) 用户报文端口号 = 代理服务器监听端口号
  • c) HTTP 消息里的URL要提供服务器的链接

2)代理服务器可以根据c)里的链接与服务器直接通信

3)服务器返回网页

4)代理服务器打包3)中的网页,返回用户。

反向代理概念

反向代理的实现

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

2)服务器返回自己的服务到负载均衡设备

3)负载均衡将服务器的服务返回用户

以上的潜台词是:用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,解析得到的IP其实是负载均衡的IP,而不是服务器的IP,这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务。

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器.

Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;特点是占有内存少,并发能力强。

区别总结

用途

正向代理:针对客户端而言, 代理服务器代理客户端,转发请求,并将获得的内容返回给客户端。

反向代理:针对服务端而言, 代理服务器就像是原始服务器,代理集群的web节点服务器返回结果。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

安全

正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。

反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。