nginx的代理服务
nginx的代理服务
正向代理和反向代理
正向代理服务器就是用来让局域网的客户端接入外网访问外网资源,反向代理就是让外网的客户端接入局域网中的站点以访问点中的资源
正向代理
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器
这个代理服务器呢,他能访问那个我不能访问的网站
于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容
代理服务器去取回来,然后返回给我
从网站的角度,只在代理服务器来取内容的时候有一次记录
有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站
结论就是 正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理
反向代理
对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
1)Proxy_pass指令用来设置代理服务器的地址,
例子:#反向代理服务的指令
upsteam westos {
server 172.25.254.1:80;
server 172.25.254.2:80;
}
server {
listen 80;
server_name www.mimi.com
location / {
proxy_pass http://westos;
}
}
例子2)
[root@wish1 408]# cat 5
server {
listen 80
server_name www.myweb.name;
location /server/
{
#配置1 proxy_pass http://192.168.1.1;
#配置2 proxy_pass http://192.168.1.1/;
}
}
在该配置中,location块中使用’/server/来作作为uri变量的值匹配URI”/server”中请求的URL。这时配置1和2就不一样了,配置1指令中的URL变量不包含URI,nginx服务器将不改变源地址的URI;使用配置2的时候,指令中包含了URI“/” nginx服务器会将源地址的URI替换成/
比如客户端的请求URL为http://www.,myweb.name/server/index.html,将会被实例2 中的location成功匹配,使用配置1的时候,转向的URL为http://192.168.1.1/server/index.html,原地址的URI/server未被改变,但使用配置2的时候,转向的URI为http://192.168.1.1/index.html,可以看到原地址的URI /server/被替换成/
nginx的缓存机制
Nginx服务器的这一种缓存主要还是依靠自身的proxy store功能对404错误的进行重定向来实现的,当nginx服务器在处理客户端请求的时候,发现请求的资源不存在,会产生404错误,然后服务器捕捉这个错误,进一步向后端服务器转交请求数据,最后将后端服务器的响应数据传回给客户端,同时在本地进行缓存。