通常会遇到一些问题,是因为设置代理或不设置代理引起的。我相信大多数同事,听的比较多的是代理这个词,但实际上并不了解其中是什么意思,或者了解,但也不具体。
从理论上讲一下吧!
正向代理的概念
正向代理,也就是传说中的代理,他的工作原理就像一个跳板,
简单的说,
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器
这个代理服务器呢,他能访问那个我不能访问的网站
于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容
代理服务器去取回来,然后返回给我
从网站的角度,只在代理服务器来取内容的时候有一次记录
有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站
结论就是 正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
A想吃一块饼干,要找个商店去买来才可以,店子要去厂家进货卖给A。那么这个商店对于这个用户A来讲。就是一个代理服务器。而且也并不是所有店子都有这种饼干卖的,所以选择哪家店是用户A要考虑的。
反向代理的概念
继续举例:
例用户访问 http://mrobot.pcbaby.com.cn/s-3600/qzbd/cms/recordsRecommended.xsp?day=1&v=300
但mrobot.pcbaby.com.cn这个服务器上并不存在s-3600/qzbd/cms/recordsRecommended.xsp?day=1&v=300页面或内容
他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户
但用户并不知情
这很正常,用户一般都很笨
这里所提到的 mrobot.pcbaby.com.cn这个域名对应的服务器就设置了反向代理功能
我们常用到的nginx作最多的是反向代理。它不需要客户端去设置什么。全由反向代理服务器帮忙处理了。
location ~ ^/(x|s|p)(-(d+))?(-u2g|-g2u|-g2g|-u2u)?/qzbd(.+?){
proxy_pass http://WEB_XSP_BABY_QZBD;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
proxy_pass
就是反向代理到了:
#亲子宝典xsp服务器
upstream WEB_XSP_BABY_QZBD {
server 192.168.74.80:8976;
}
结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。