参考自:https://juejin.im/entry/5a3ddb5df265da43333e9b25
一、什么是动静分离
所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片、html等静态的文件,tomcat(或weblogic)处理jsp、do等动态文件,从而达到动静页面访问时通过不同的容器来处理。
nginx处理静态页面效率远高于tomcat,而tomcat擅长动态页面处理,这样一来就能更好的提高并发,处理性能。
二、结构图
三、安装Nginx
从Nginx官网nginx.org/下载最新的版本:
其中,mainline是主线版,stable是稳定版,这里选择稳定版进行下载,下载下来之后,进入到该目录:
1、启动nginx
start nginx
2、停止:
nginx.exe -s stop #stop是快速停止nginx,可能并不保存相关信息;
或
nginx.exe -s quit #quit是完整有序的停止nginx,并保存相关信息。
3、重新载入Nginx:
nginx.exe -s reload #当配置信息修改,需要重新载入这些配置时使用此命令。
然后访问localhost,出现如下的页面
四、安装、配置Tomcat
运行成功后访问localhost:8080
然后在webapp目录下新建一个nginx目录并在该目录下创建一个index.jsp和一个img目录,index.jsp内容如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <body> <h2>Nginx动静分离</h2> <% out.println("["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + "<br/>session id:" + session.getId()); %> <br/> <img alt="图片" src="/nginx/img/1.jpg" style="width:300px;height:300px"> </body> </html>
然后访问: http://localhost:8080/nginx/
五·、配置Nginx动静分离
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; access_log E:/AA-PORTAL/nginx-1.13.10/logs/access.log ; sendfile on; keepalive_timeout 65; #配置代理 upstream mynginx{ server 127.0.0.1:8080; } server { listen 80; server_name 127.0.0.1; charset utf-8; #设置编码为utf-8; location / { root E:/AA-PORTAL/nginx-1.13.10/webapps; index index.html index.htm; } # 所有动态请求都转发给tomcat处理 location ~ \.(jsp|do)$ { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://mynginx; } #静态文件交给nginx处理 location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { root E:/AA-PORTAL/nginx-1.13.10/webapps; } #静态文件交给nginx处理 location ~ .*\.(js|css)?$ { root E:/AA-PORTAL/nginx-1.13.10/webapps; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
然后通以下命令重启nginx
.\nginx.exe -s reload
通过nginx访问tomcat
可以访问,说明配置的nginx生效了,但是图片没有显示,这是由于静态的文件交由nginx处理了,所以在上面配置的路径下新建文件夹:nginx/img,然后把图片复制到
E:\AA-PORTAL\nginx-1.13.10\webapps\nginx\img目录下就行了
然后从新访问该地址,就能成功的显示了!