tomcat 無法加載js和css 等靜態文件的問題


 

  前段時間做了個網站,在本地tomcat測試都沒有問題,但是部署到阿里雲上之后,系統樣式全沒了。jsp等動態頁面訪問正常。

  打開瀏覽器監控發現所有的css 和js 文件返回都是404 。直接訪問單個的css 文件也同樣是404。以為是路徑錯了,於是一一對了一遍各個文件的路徑和服務器上 tomcat路徑方面的設置

  發現路徑沒有問題。在網站更目錄創建一個css文件和html文件均不能訪問。確認不是網站路徑的問題。

  然后懷疑是tomcat 和 Apache 沖突了,或者可能是Apache 的設置不對。因為阿里雲是默認的鏡像,里面已經裝了Apache和tomcat。也沒有做什么設置。

  於是直接把Apache 服務停止。但是還是沒有用,依然無法訪問css 和html 頁面。

  然后懷疑是不是服務器js 和css 這兩個文件的目錄權限有問題,查看了這兩個文件夾的權限。沒有問題,

  而且在jsp文件能訪問的目錄,直接創建一個js 文件,同樣不能訪問。於是權限的懷疑被排除。

  想了半天還是不知道到底是哪配置不對。然后突然想到所有的請求都是nginx 分發的。 是不是nginx 的配置不對。但是一想nginx 配置不對的話,那網站都不能訪問啊。為什么jsp 頁面能訪問而靜態文件不行。 帶着這個疑問,去查看下nginx的配置,打開nginx conf文件夾中的nginx.conf,果然發現了nginx配置可疑的地方。

  server
  {
    listen 80;
    server_name localhost;
    index index.html index.htm index.jsp;
    root /var/www/web/ROOT;

    location ~ .*.jsp$
    {
      index index.jsp;
      proxy_pass http://localhost:8080;
    }

    locattion *.jsp$ 的意思就是所有jsp的頁面均交由tomcat處理。
    root 就是網站的資源存放路徑。

    終於清楚了,服務器把所有的請求都是由nginx 轉發。nginx 會把 jsp 的請求轉給tomcat 來處理,

    至於靜態資源的請求 nginx 直接就處理了,直接把資源文件返回給客戶端,無需tomcat 處理。

    於是修改root 的設置, 將地址指向實際的網站資源文件的地址。 回到頁面重新測試,果然好了。

    剛開始不知道原因,各種測試,各種改代碼,服務器相關的設置都改了一遍。知道真相之后,其實要解決非常簡單。

 

 


免責聲明!

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



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