Tomcat是一个比较全面的web容器,对静态网页的处理,还是比较费资源的,特别是每次都要从磁盘读取静态页面,然后返回,这中间会消耗Tomcat的资源,可能会使那些动态页面解析性能受到影响。将静态资源和动态资源隔离开、能够有效的减轻Tomcat服务器的压力,提升网站整体性能。Nginx + Tomcat 动静分离简单来说就是使用 Nginx 把动态和静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。
动静分离从目前实现角度来讲大致分为两种,一种是纯粹的把静态文件放在独立的服务器上,独立出来用域名访问,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起部署,通过Nginx来分开。
Nginx
和Tomcat
的安装部署步骤省略。
通过在Nginx的配置文件中的server段代码配置不同的location实现动静分离:vim /etc/nginx/conf.d/default.conf
(如果想把新的配置单独写出来也是可以的,比如,新建一个文件 vim /etc/nginx/conf.d/tomcat
,将配置写入,在 /etc/nginx/conf.d/default.conf
中用include引入:include /etc/nginx/conf.d/tomcat;
)
写入以下配置
1 | 静态请求通过Nginx访问本地web应用目录中的静态资源 |
负载均衡功能是将接收到的请求分配到后端的多台服务器上,Nginx里需要 upstream{} 模块来配合使用
打开Nginx主配置文件,vim /etc/nginx/nginx.conf
先修改nginx运行默认的用户:第一行 user nginx
改为 user root
再写入以下配置:
1 | upstream tomcat { |
配置完毕后,重启Nginx:systemctl restart nginx
将打成war包的项目上传到tomcat的webapps目录下,启动Tomcat,在浏览器通过Nginx访问项目,Nginx的默认端口为80,Tomcat的默认端口为8080。
Ctrl+F5刷新页面,查看Nginx和Tomcat的日志。查看Nginx的日志
查看Tomcat的日志
可以看到静态请求和动态请求成功分离了。
部署tomcat多实例:tomcat_1,tomcat_2,参考部署tomcat多实例部分。
注意:这里为了验证负载均衡效果,需要注释掉 /etc/nginx/nginx.conf 配置文件里的 ip_hash;
重启Nginx和tomcat,在浏览器访问项目
用tail命令查看Tomcat的日志,多次刷新页面,可以看到两个Tomcat都会响应请求
Nginx+Tomcat的负载功能就配置完成了,这只是简单设置了一下,生产环境中还有很多详细的调整,比如,反向代理,防盗链,压缩,缓存策略等等,后续再逐渐增加。
本文参考自:
(1)https://www.cnblogs.com/taiyonghai/p/6728707.html
(2)https://www.cnblogs.com/taiyonghai/p/5610112.html
(3)https://www.cnblogs.com/jiangyang/p/8485046.html