Nginx的反向代理(可以理解为重定向):
Node02这个配置也可以转向外网如:京东
配置好后重新加载:[root@node01 sbin]# ./nginx -s reload
[root@node02 ~]# service httpd start
访问地址:www.taobao.com
当我们再次访问淘宝的时候就出现了跳转到百度的现象了。(注意此时URL发生改变了)
我们在工作中尽量不要出现url的跳转现象,这样对用户体验不好,接下来我们要重新配置。
只要将http改成https就可以做到代理效果,即url不发生变化,但是内容确实已经发生了代理。
我们访问的是淘宝,url是www.taobao.com
。但是内容确是百度的页面。
Nginx反向代理做负载均衡
那么,我们考虑一个问题,因为我们这里使用了轮循的方法去使用Tomcat服务器,所以假如你在node2节点中上传了一张照片,你刷新一下,就跳转到了node3节点的Tomcat服务器,你还能找到刚才的图片吗,明显是不行的,所以说,通常像这种上传照片这种事情,一般都是有专门上传照片的公共服务器,访问图片的时候就跳转到这个公共服务器的URI进行访问。
既然图片找不到,登录信息更不用说,这里我们着重解决一下登录场景中session共享的问题:
1、session共享
当用户第一次访问的时候进入一个tomcat,当用户第二次访问的时候又可能会进入到另一个tomcat,这个时候原来的session会失去作用。这样的话用户可能会每点击一个链接都要重新登录。这里要保持session一致性。(memcached基于缓存,属于非关系型数据库,用于存放session,现在一般被redis代替,这里数据量不大,就可以使用这个)
2、思路
1、安装memcached
-----(1)安装libevent
-----(2)安装memcached
-----(3)启动memcached
– memcached -d -m 128m -p 11211 -l 192.168.43.71 -u root -P /tmp/
– -d:后台启动服务
– -m:缓存大小
– -p:端口
– -l:IP
– -P:服务器启动后的系统进程ID,存储的文件
– -u:服务器启动是以哪个用户名作为管理用户
如果源配置了也可以用 yum –y install memcached 进行安装
要与mamcached进行交互,Tomcat要把登录信息存放到mamcached里面,需要给Tomcat进行一个“小手术”
2、配置session共享如下:
3、拷贝jar到tomcat的lib下,jar包见附件
4、配置tomcat,每个tomcat里面的context.xml中加入
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.43.71:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"• sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
这里解释一下整体原理:每次用户登录Nginx,使用Tomcat的时候,会将信息暂时存在memcached中,刷新Tomcat以后,session信息会从memcached中访问,这样就达到了保存session的目的。
架构方案:
主机名 | memcached | nginx | tomcat |
---|---|---|---|
Node01 | √ | √ | |
Node02 | √ | ||
Node03 | √ |