码迷,mamicode.com
首页 > 其他好文 > 详细

nginx

时间:2019-08-13 00:12:58      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:ups   ssi   ip地址   服务   调用   登录   ESS   影响   分离   

location / {
proxy_pass http://127.0.0.1:8111;
}

location / 表示处理所有请求
proxy_pass http://127.0.0.1:8111; 表示把请求都交给http://127.0.0.1:8111来处理


访问http://127.0.0.1:9090/login.jsp nginx的主页,跳转到http://127.0.0.1:8111


既然直接通过127.0.0.1:8111/login.jsp 可以访问,那么干嘛要通过127.0.0.1/login.jsp 去反向代理到tomcat呢? 为什么不直接使用tomcat呢?
因为nginx在处理静态文件的吞吐量上面比tomcat好很多,通常他们俩配合,不会把所有的请求都如本例所示的交给tomcat, 而是把静态请求交给nginx,动态请求,如jsp, servlet,ssm, struts等请求交给tomcat. 从而达到动静分离的效果。 接下来就会讲解如何进行动静分离。

动静分离
所谓的动静分离就是指图片,css, js之类的都交给nginx来处理,nginx处理不了的,比如jsp 就交给tomcat来处理~
好处是nginx处理静态内容的吞吐量很高,比tomcat高多了,这样无形中提升了性能。
这表示所有的css js png访问都由nginx来做,访问的地址是D:/tomcat_8111/webapps/ROOT
location ~\.(css|js|png)$ {
root D:/tomcat_8111/webapps/ROOT;
}

 

负载均衡
首先增加一个upstream ,用来指向这两个tomcat
upstream tomcat_8111_8222{
server 127.0.0.1:8111 weight=1;
server 127.0.0.1:8222 weight=2;
}

然后修改location,反向代理到上述配置。
location / {
proxy_pass http://tomcat_8111_8222;
}
weight表示权重,值越大,被分配到的几率越大。 最大多少呢?我也不知道。。。反正10以内都可以用吧,我想的话~
现在是8222 的调用机会更大

 


session共享
通过负载均衡课程,我们可以把请求分发到不同的 Tomcat 来缓解服务器的压力,但是这里存在一个问题: 当同一个用户第一次访问tomcat_8111 并且登录成功, 而第二次访问却被分配到了tomcat_8222, 这里并没有记录他的登陆状态,那么就会呈现未登录状态了,严重伤害了用户体验。

解决方法一:
通过ip地址标记用户,如果多次请求都是从同一个ip来的,那么就都分配到同一个tomcat.
不过这种方案并不完美,当如下几种情况发生时就有问题:
1. 大量请求来之某个局域网,那么相当于就没有负载均衡了
2. 如果tomcat_8111 挂了,那么此时nginx只能把请求交给tomcat_8222,但是这里却没有记录session,用户体验依然受影响。

解决方法二:
redis+tomcat-sessoin-manager
既然第一种解决办法有问题,那么就采用第二种解决办法:用Redis来存取session.
Redis是什么呢?说简单点就是个独立的Hashmap,用来存放键值对的。
这样当tomcat1需要保存session值的时候,就可以把它放在Redis上,需要取的时候,也从Redis上取。
那么考虑这个情景:
1. 用户提交账号密码的行为被分配在了tomcat8111上,登陆信息被存放在redis里。
2. 当用户第二次访问的时候,被分配到了tomcat8222上
3. 那么此时tomcat8222就会从redis去获取相关信息,一看有对应信息,那么就会呈现登陆状态。

 

nginx

标签:ups   ssi   ip地址   服务   调用   登录   ESS   影响   分离   

原文地址:https://www.cnblogs.com/yslu/p/11343260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!