在下自己整理 ,如有錯誤請指正
一般的nginx的 靜態文件的項目是這么配置的
location ~ .*\.(js|css)?$
{
root E:/Workspaces/Idea15/demo/web/WEB-INF;
expires 1h;
}
但是如果這樣配置,系統是讀取不到對應的文件的,因為springmvc本身的前端模板配置了訪問靜態資源 Handles
那如何使用nginx搭理訪問,實現動靜分離
搭建nginx代理
第一階段,修改nginx.conf 文件
#location / {
#root html;
#index index.html index.htm;
#}
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://127.0.0.1:8080;
# 真實的客戶端IP
proxy_set_header X-Real-IP $remote_addr;
# 請求頭中Host信息
proxy_set_header Host $host;
# 代理路由信息,此處取IP有安全隱患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真實的用戶訪問協議
proxy_set_header X-Forwarded-Proto $scheme;
}
這樣替換以后,就可以通過nginx 代理轉到tomcat了,但是靜態資源仍然是通過tomcat 來讀取的
注意:不需要更改原始的項目文件,需要修改tomcat的配置,bin/server.xml 將端口號由80改回8080
處理靜態文件
第二階段,實現動靜分離
在springmvc的前端控制器中配置如下:
<mvc:resources mapping="/image/**" location="/WEB-INF/"/> <mvc:resources mapping="/css/**" location="/WEB-INF/"/> <mvc:resources mapping="/js/**" location="/WEB-INF/"/>
在nginx中配置如下,demo是我的項目名稱,以下三種方式都可以區分
location demo/image/ {
root E:/Workspaces/Idea15/demo/web/WEB-INF;
}
location /css/ {
root E:/Workspaces/Idea15/demo/web/WEB-INF;
}
location js/ {
root E:/Workspaces/Idea15/demo/web/WEB-INF;
}
但是寫成 /demo/image/ 就是不行的
注:404頁面等,如果在springmvc的項目中配置了,就不需要在這里接着配置了
最終的nginx.conf 頁面代碼如下:
#user nobody; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; location / { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://127.0.0.1:8080; # 真實的客戶端IP proxy_set_header X-Real-IP $remote_addr; # 請求頭中Host信息 proxy_set_header Host $host; # 代理路由信息,此處取IP有安全隱患 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 真實的用戶訪問協議 proxy_set_header X-Forwarded-Proto $scheme; } location image/ { root E:/Workspaces/Idea15/demo/web/WEB-INF; } location css/ { root E:/Workspaces/Idea15/demo/web/WEB-INF; } location js/ { root E:/Workspaces/Idea15/demo/web/WEB-INF; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }