一个栗子
有一个小朋友在家喜欢上网,但是家长害怕他上一些不符合社会主义核心价值观的网站,于是设置了防火墙,禁止访问一些有害的网站。
小朋友要想办法,凭什么不让我看,于是使用了代理服务器,这些代理服务器将禁止访问的网页打包好,然后再转交给小朋友,这就是正向代理
但是小朋友访问的不健康网站,每天都有数以万计的小朋友访问😊,网站不堪重负,处理客户端(用户)请求能力有一个极限,可以使用多个服务器来共同分担这么多的小朋友的请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别,这就是反向代理
正向代理概念
正向代理,也就是传说中的代理,他的工作原理就像一个跳板,
简单的说,
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器
这个代理服务器呢,他能访问那个我不能访问的网站
于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容 代理服务器去取回来,然后返回给我
从网站的角度,只在代理服务器来取内容的时候有一次记录 有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站
结论就是 正向代理 是一个位于客户端和原始服务器(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空间下。
安全
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。