Nginx+Redis实现反向代理和Session共享
Posted 睿江云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+Redis实现反向代理和Session共享相关的知识,希望对你有一定的参考价值。
什么是正向代理和反向代理?
假如我访问不了google,但是有个代理服务器可以访问google,那我可以通过连接这个代理服务器来访问google。
正向代理是一个位于客户端和目标服务器之间的一个代理服务器,为了从目标服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向目标服务器转交请求并将获得的内容返回给客户端。
访问http://www.baidu.com,但是百度页面文件不是在访问的目标服务器上,目标服务器只是暗中从另外一台服务器获取页面文件,然后呈现给用户,用户对内部操作并不知情。
正向代理和反向代理区别
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。
反向代理和负载均衡区别?
这里不得不说说两者之间的区别了,之前还一直认为它们没啥区别~~~从功能方面看,个人认为是一个包含和被包含的关系。
1.反向代理,是有把命令转发的能力,这个是必须基础。而负载均衡,是把命令转发到不同的服务器上,均衡各个服务器。
2.做了反向代理才能实现负载均衡。负载均衡是做反向代理的目的之一。
服务器架构
IMG
1.有三台服务器,其中两台是用作Web服务(相同系统项目),另外一台用nginx实现负载均衡、反向代理、Session服务器
2.访问过程:
a. 当用户A访问nginx代理的时候,nginx指向web1;
b. web1通过session_id()获取当前浏览器头的cookie信息所带的session_id,然后以[session_id()."username"]的作为key的形式保存在redis中。
c. 当用户A再次刷新页面访问nginx代理的时候,nginx指向web2;
d. web2获取session_id然后以[session_id()."username"]的形式查询redis是否存在该session,如果存在则无需登录。
3.架构特点
Nginx反向代理配置
1.添加hosts文件
#vi /etc/hosts 127.0.0.1 centos.agent.com
2.nginx.conf
nginx 使用反向代理,主要是使用location模块下的proxy_pass选项
3.测试访问
当我访问上的nginx 的 centos.agent.com 的内容时候, 就反向代理到虚拟机centos上的 192.168.33.10 的index.html页面。
Nginx负载均衡
随着业务量的增大,就需要使用负载均衡减轻单台服务器压了。
centos.agent.com
作为主服务器承担请求分发的任务,当外部访问centos.agent.com,就会把请求发送给以下这三台服务器
192.168.33.11
192.168.33.12
192.168.33.13
●基于 weight 权重的负载
该配置使用恒等权重,三台服务器权重相同,轮询分发。
●其他负载均衡
该配置使用恒等权重,三台服务器权重相同,轮询分发。
●基于 ip_hash 的负载
这种分配方式,每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,这种方法可以有效解决了动态网页存在的session共享问题
注意:
ip_hash 模式下,最好不要设置weight参数,这样将会导致很多的流量分配不均匀。
按照访问IP的hash结果分配,如果某一IP访问量大的话就变相的违背了负载均衡特性。
本文部分转自互联网,已修改
点击“阅读原文”了解更多实力干货
以上是关于Nginx+Redis实现反向代理和Session共享的主要内容,如果未能解决你的问题,请参考以下文章
Nginx反向代理,负载均衡,redis session共享,keepalived高可用
Centos7下Nginx+Tomcat配置反向代理,使用redis解决session一致性问题
Nginx+Tomcat反向代理之负载均衡,redis存放session,keepalived暂未搭建