參考自: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目錄下就行了
然后從新訪問該地址,就能成功的顯示了!
