一、为什么动静分离
Nginx解析静态资源的性能比较好,而Tomcat对动态资源的解析比较好,解析静态资源性能较差,动静分离的目的也就是各司其职,加快页面解析的速度!
二、动静分离的方法
方案一: 静态资源与动态资源放在两个不同的服务器上
我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 Nginx 并且在 B 上安装 Tomcat。配置 Nginx,当请求的是 html、jpg 等静态资源时,就访问 A 主机上的静态资源目录;当用户提出动态资源的请求时,则将请求转发到后端的 B 服务器上,交由 Tomcat 处理,再由 Nginx 将结果返回给请求端。
1. 动静分离的配置文件
# 转发的服务器,upstream 为负载均衡做准备
upstream tomcatserver2{
server 192.168.216.137:8080;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index ak47.html index.html index.htm;
}
# 动态请求的转发
location ~ .*.jsp$ {
proxy_pass http://tomcatserver2;
proxy_set_header Host $host;
}
# 静态请求直接读取
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /im
expires 30d;
}
}
【提示】
2. 在虚拟机的根目录创建im文件夹,然后放入一个图片
3. 测试
(1)启动nginx服务
(2)访问静态资源
(3)访问动态资源
(4)测试成功!
方案二 动静资源混合放在一起发布,通过nginx来分开!具体怎么实现,也是用location指定不同的后缀名实现不同的请求转发!(不推荐)