?
前段時間做了個網(wǎng)站,在本地tomcat測試都沒有問題,但是部署到阿里云上之后,系統(tǒng)樣式全沒了。jsp等動態(tài)頁面訪問正常。
打開瀏覽器監(jiān)控發(fā)現(xiàn)所有的css 和js 文件返回都是404 。直接訪問單個的css 文件也同樣是404。以為是路徑錯了,于是一一對了一遍各個文件的路徑和服務器上 tomcat路徑方面的設置
發(fā)現(xiàn)路徑?jīng)]有問題。在網(wǎng)站更目錄創(chuàng)建一個css文件和html文件均不能訪問。確認不是網(wǎng)站路徑的問題。
然后懷疑是tomcat 和 Apache 沖突了,或者可能是Apache 的設置不對。因為阿里云是默認的鏡像,里面已經(jīng)裝了Apache和tomcat。也沒有做什么設置。
于是直接把Apache 服務停止。但是還是沒有用,依然無法訪問css 和html 頁面。
然后懷疑是不是服務器js 和css 這兩個文件的目錄權限有問題,查看了這兩個文件夾的權限。沒有問題,
而且在jsp文件能訪問的目錄,直接創(chuàng)建一個js 文件,同樣不能訪問。于是權限的懷疑被排除。
想了半天還是不知道到底是哪配置不對。然后突然想到所有的請求都是nginx 分發(fā)的。 是不是nginx 的配置不對。但是一想nginx 配置不對的話,那網(wǎng)站都不能訪問啊。為什么jsp 頁面能訪問而靜態(tài)文件不行。 帶著這個疑問,去查看下nginx的配置,打開nginx conf文件夾中的nginx.conf,果然發(fā)現(xiàn)了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 就是網(wǎng)站的資源存放路徑。
終于清楚了,服務器把所有的請求都是由nginx 轉(zhuǎn)發(fā)。nginx 會把 jsp 的請求轉(zhuǎn)給tomcat 來處理,
至于靜態(tài)資源的請求 nginx 直接就處理了,直接把資源文件返回給客戶端,無需tomcat 處理。
于是修改root 的設置, 將地址指向?qū)嶋H的網(wǎng)站資源文件的地址。 回到頁面重新測試,果然好了。
剛開始不知道原因,各種測試,各種改代碼,服務器相關的設置都改了一遍。知道真相之后,其實要解決非常簡單。
?
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
