springmvc搭配nginx 實現動靜分離


在下自己整理 ,如有錯誤請指正


一般的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;
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM