1.什么是动静分离
将动态请求和静态请求区分访问
2.为什么要做动静分离
tomcat本身处理静态效率不高,还会带来资源开销.所以使用动静分离,将静态由Nginx处理, 动态由PHP处理或Tomcat处理
3.如何实现动静分离
- Nginx根据客户端请求的url来判断请求的是否是静态资源,如果请求的url包含jpg、png,则由Nginx处理。
- 如果请求的url是.php或者.jsp等等,这个时候这个请求是动态的,将转发给tomcat处理
总结来说,Nginx是通过url来区分请求的类型,并转发给不同的服务端
4.单机实现动静分离实战
1.安装
[root@web01 ~]# yum install java tomcat -y
2.初始化环境
[root@web01 ~]# mkdir /usr/share/tomcat/webapps/ROOT -->主要站点根目录
[root@web01 ~]# vi /usr/share/tomcat/webapps/ROOT/index.jsp
<%@ 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
3.重启
[root@web01 ~]# systemctl start tomcat
4.配置Nginx
[root@web1 conf.d]# cat ds.com.conf
server {
listen 80;
server_name ds.com;
location / {
proxy_pass http://127.0.0.1:8000;
}
location ~* \.(png|jpg) {
root /images;
}
}
5.集群实现动静分离
负载均衡服务器
[root@lb01 conf.d]# cat ds.com.conf
upstream java {
server 172.16.1.7;
}
upstream static {
server 172.16.1.8;
}
server {
listen 80;
server_name ds.com;
location / {
proxy_pass http://java;
include proxy_params;
}
location ~* \.(png|jpg)$ {
proxy_pass http://static;
include proxy_params;
}
}
web01动态资源服务器
[root@web1 conf.d]# cat ds.com.conf
server {
listen 80;
server_name ds.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
web02静态资源服务器
[root@web02 conf.d]# cat ds.com.conf
server {
listen 80;
server_name ds.com;
location ~* \.(png|gif|jpg|mp4)$ {
root /images;
expires 1d;
}
}
网友评论