1.什么是动静分离?
将动态请求和静态请求区分访问
动静分离的优点:动静分离之后,即使动态服务不可用,也不会影响静态资源,反之,也是
2.为什么要做动静分离?
动态处理要用到Tomcat,而Tomcat程序本身是用来处理jsp代码的,但也能处理静态资源;
由于Tomcat本身处理静态资源效率不高,还会带来资源的开销,所以我们进行动静分离,用Nginx去处理静态资源
3。如何实现动静分离?
可以根据Nginx客户端请求的url来判断请求的资源类型,用location进行匹配,将不同的资源转发给不同的服务端
4.单机实现动静分离
[root@web01 ~]# yum install java tomcat -y #因为tomcat是Java程序,所以要安装java
[root@web01 ~]# mkdir /usr/share/tomcat/webapps/ROOT #tomcat的默认站点,根目录
[root@web01 ~]#vi /usr/share/tomcat/webapps/ROOT/index.jsp #上传java代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>Nginx+Tomcat</title>
</head>
<body>
<%
Random rand = new Random();
out.println("<h2>动态资源</h2>");
out.println(rand.nextInt(99)+100);
%>
<h2>静态图片</h2>
<img src="nginx.png" />
</body>
</html>
[root@web01 ~]# wget -O /usr/share/tomcat/webapps/ROOT/nginx.png http://nginx.org/nginx.png #下载nginx.png图片到指定文件下
[root@web01 ~]# systemctl start tomcat #启动tomcat
配置Nginx
#tomcat监听在8080端口上;
[root@web01 conf.d]# cat ds.oldxu.com.conf
server {
listen 80;
server_name ds.oldxu.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
location ~* \.(png|gif|jpg|mp4)$ {
root /images;
expires 1d;
}
}
5.集群实现动静分离
在负载均衡上配置
[root@lb01 conf.d]# cat proxy_ds.oldxu.com.conf
upstream java {
server 172.16.1.7:8080;
}
upstream static {
server 172.16.1.8:80;
}
server {
listen 80;
server_name ds.oldxu.com;
location / {
proxy_pass http://java;
include proxy_params;
}
location ~* \.(png|gif|jpeg)$ {
proxy_pass http://static;
expires 2d;
include proxy_params;
}
}
在web01上配置tomcat
#在web01上关闭nginx,只开启tomcat
[root@web01 conf.d]# cat ds.oldxu.com.conf
server {
listen 80;
server_name ds.oldxu.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
在web02上配置
server {
listen 80;
server_name ds.oldyang.com;
location / {
proxy_pass http://127.0.0.1:80;
}
location ~* \.(png|gif|jpg|mp4)$ {
root /images;
}
}
浙公网安备 33010602011771号