nginx+tomcat动静分离实现负载均衡

2018-07-20  本文已影响240人  橡皮24

一、 简介

1. 为什么要用nginx+tomcat动静分离

  主要是nginx处理静态页面的效率远高于tomcat的处理能力,如果tomcat的请求量为1000次,则nginx的请求量为6000次,tomcat每秒的吞吐量为0.6M,nginx的每秒吞吐量为3.6M,可以说,nginx处理静态资源的能力是tomcat处理能力的6倍,优势可见一斑。

2. 动静分离原理

  服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。
  我们在机器上同时安装了nginx和tomcat(或者分两台机器做),把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在tomcat的webroot目录下面,当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。

3.系统简介及配置
IP地址 主机名 运行服务 系统版本 服务版本
172.19.150.104 nginx Nginx centos7.3.1611 nginx/1.6.2
172.19.150.105 tomcat Tomcat/jdk centos7.3.1611 tomcat7/jdk1.7
备注:nginx和tomcat等服务之前都已经安装好了。这里不再重复。(默认都是80端口)

二、 配置动静分离

1. 配置nginx

  Nginx的主配置文件内有include /etc/nginx/conf.d/*.conf;所以我在/etc/nginx/conf.d/目录下创建local.conf配置文件

[root@nginx conf.d]# vim local.conf 

server {
listen 80;              ##监听端口
server_name 172.19.150.104;
access_log /opt/nginx_log/local.log main;
location / {
index index.html;
root /var/www/html; ##主目录
}

location ~ \.(gif|jpg|jpeg|png|bmp|swf)$ {      ##以括号内结尾的请求,都请求nginx
root /var/www/html;                     ##主目录
                }

location ~ \.(jsp|do)$ {                        ##以.jsp和.do结尾的,都请求tomcat
proxy_pass http://172.19.150.105;           ##tomcat的IP地址
expires 1h;                                 ##缓存一小时
                }
}
注意:如果tomcat的端口不为80在IP后边要加端口号。不能指定从目录

三、 验证

1.配置nginx

在nginx主目录里编写index.html(属于静态页面)

[root@nginx ~]# vim /var/www/html/index.html 

nginx
2.配置tomcat

在tomcat主目录里编写动态页面test1.jsp

[root@tomcat ~]# vim /data/webapps/test1.jsp 

<head>
<body>
<script type="text/javascript">
function display(clock){
    var now=new Date();   //创建Date对象
    var year=now.getFullYear(); //获取年份
    var month=now.getMonth(); //获取月份
    var date=now.getDate();  //获取日期
    var day=now.getDay();  //获取星期
    var hour=now.getHours(); //获取小时
    var minu=now.getMinutes(); //获取分钟
    var sec=now.getSeconds(); //获取秒钟
    month=month+1;
    var arr_week=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
    var week=arr_week[day];  //获取中文的星期
    var time=year+"年"+month+"月"+date+"日 "+week+" "+hour+":"+minu+":"+sec; //组合系统时间
    clock.innerHTML="当前时间:"+time; //显示系统时间
}
window.onload=function(){
    window.setInterval("display(clock)", 1000);
}
</script>
<div id="clock" ></div>
</body>
</html>
3.验证是否成功

①直接访问nginx


②直接访问tomcat的jsp内容


③通过nginx访问tomcat的jsp


所以nginx+tomcat的动静分离成功

上一篇 下一篇

猜你喜欢

热点阅读