1、概念
①动态请求和静态请求
- 动态请求:需要由 Java 程序来处理的请求。
- 静态请求:访问静态资源,不需要 Java 程序处理的请求。
②实现方案
- 方案一:纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。
- 方案二:动态跟静态文件混合在一起发布,通过 Nginx 来分开。
2、操作
①准备工作
- 在 Linux 系统中创建目录用来保存静态资源文件。
- /data/images/mi.jpg
- /data/www/index.html
- 在 Nginx 中配置对这些静态资源的映射
# 实验六:动静分离
# 配置对静态资源的映射
server {
listen 7777;
server_name www.atguigu.shuai;
location / {
root html;
index index.html;
}
# 当用户通过 Nginx 访问 /images/ 目录下的内容时,参考这个 location 配置
location /images/ {
# root 表示指定静态资源所在的根目录
root /data/;
# 开启 autoindex 功能,可以在页面上显示目录的内容
autoindex on;
}
# 当用户通过 Nginx 访问 /www/ 目录下的内容时,参考这个 location 配置
location /www/ {
root /data/;
autoindex on;
index index.html index.htm;
}
}
- 在 Tomcat 中准备 JSP 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>JSP 页面</h1>
<img src="/images/mi.jpg" />
</body>
</html>
现在在这个 JSP 页面中,/images/mi.jpg 路径并不是按照 Tomcat 上运行的 Web 应用来编写的。而是按照通过 Nginx 访问静态资源的规则,编写的路径。
②配置 Nginx 访问动态资源
# 配置 location 访问 Tomcat
location / {
proxy_pass http://localhost:8080;
index index.jsp;
}
③Nginx 中的总体配置
# 实验六:动静分离
# 配置对静态资源的映射
server {
listen 7777;
server_name www.atguigu.shuai;
# 配置 location 访问 Tomcat
location / {
proxy_pass http://localhost:8080;
index index.jsp;
}
# 当用户通过 Nginx 访问 /images/ 目录下的内容时,参考这个 location 配置
location /images/ {
# root 表示指定静态资源所在的根目录
root /data/;
# 开启 autoindex 功能,可以在页面上显示目录的内容
autoindex on;
}
# 当用户通过 Nginx 访问 /www/ 目录下的内容时,参考这个 location 配置
location /www/ {
root /data/;
autoindex on;
index index.html index.htm;
}
}