Nginx动静分离

因为Nginx在处理静态资源的时候,效率是非常高的,而且Nginx的并发访问量也是名列前茅,而Tomcat则相对比较弱一些,所以把静态资源交个Nginx后,可以减轻Tomcat服务器的访问压力并提高静态资源的访问速度。动静分离以后,降低了动态资源和静态资源的耦合度。如动态资源宕机了也不影响静态资源的展示。

环境配置

使用Nginx的反向代理,将请求转给Tomcat进行处理。

1
2
3
4
5
6
7
8
9
10
upstream webservice {
server 192.168.200.146:8080; # web服务器的地址
}
server{
listen 80;
server_name localhost;
location /demo {
proxy_pass http://webservice;
}
}

具体实现

1.将demo.war项目中的静态资源都删除掉,重新打包生成一个war包

2.将war包部署到tomcat中,把之前部署的内容删除掉

1
2
3
进入到tomcat的webapps目录下,将之前的内容删除掉
将新的war包复制到webapps下
将tomcat启动

3.在Nginx所在服务器创建如下目录,并将对应的静态资源放入指定的位置

1604493947499

其中index.html页面的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery.min.js"></script>
<script>
$(function(){
$.get('http://192.168.200.133/demo/getAddress',function(data){
$("#msg").html(data);
});
});
</script>
</head>
<body>
<img src="images/logo.png"/>
<h1>Nginx如何将请求转发到后端服务器</h1>
<h3 id="msg"></h3>
<img src="images/mv.png"/>
</body>
</html>

4.配置Nginx的静态资源与动态资源的访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
upstream webservice{
server 192.168.200.146:8080;
}
server {
listen 80;
server_name localhost;

#动态资源
location /demo {
proxy_pass http://webservice;
}
#静态资源
location ~/.*\.(png|jpg|gif|js){
root html/web;
gzip on;
}

location / {
root html/web;
index index.html;
}
}