一、动静分离
Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是将动态请求和静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹的把静态文件放在独立的服务器上,独立出来用域名访问,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起部署,通过Nginx来分开。
为什么要动静分离?
Tomcat是一个比较全面的web容器,对静态网页的处理,应该是比较费资源的,特别是每次都要从磁盘读取静态页面,然后返回。这中间会消耗Tomcat的资源,可能会使那些动态页面解析性能受到影响。将静态资源和动态资源隔离开、能够有效的减轻Tomcat服务器的压力,提高网站整体性能。
查看系统、Nginx、Tomcat的版本号
cat /etc/redhat-release
rpm -qa |grep nginx
/usr/local/tomcat8-1/bin/version.sh
动静分离的实现
开始配置Nginx,Nginx我是用yum安装,安装可以见另一篇博客https://www.cnblogs.com/opsprobe/p/10773582.html
通过在server段代码配置不同的location实现动静分离
vim /etc/nginx/conf.d/default.conf
location ~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /usr/local/tomcat8-1/webapps/; expires 30d; } location ~.*$ { proxy_pass http://tomcat.com; }
以截图中的行数做说明:
第8行,匹配项目中用到的所有静态文件后缀,这些静态文件Nginx直接处理,波浪线~表示匹配。
第9行,静态文件直接从本地磁盘拿。
第10行,expires定义用户浏览器缓存时间30天,静态页面不经常更新的话可以节省带宽缓解服务器压力,第一次访问下载新文件状态为200,以后直接访问本地缓存状态为304,直到受访问文件发生变化或者时间到期。
vim /etc/nginx/nginx.conf
负载均衡功能往往在接收到某个请求后分配到后端的多台服务器上,那我们就需要upstream{}块来配合使用
upstream xxx{};upstream模块是命名一个后端服务器组,组名必须为后端服务器站点域名,内部可以写多台服务器ip和port,还可以设置跳转规则及权重等等
ip_hash;代表使用ip地址方式分配跳转后端服务器,同一ip请求每次都会访问同一台后端服务器
server;代表后端服务器地址
server{};server模块依然是接收外部请求的部分
server_name;代表外网访问域名
location / {};同样代表过滤器,用于制定不同请求的不同操作
proxy_pass;代表后端服务器组名,此组名必须为后端服务器站点域名
server_name和upstream{}的组名可以不一致,server_name是外网访问接收请求的域名,upstream{}的组名是跳转后端服务器时站点访问的域名
复制Tomcat
原文地址:https://www.cnblogs.com/opsprobe/p/11966919.html