最近碰到了nginx代理一個頁面后
proxy_pass http://8.1.1.1:6080/binding.html;
js加載成功,css卻無法加載的問題。
解決辦法:
1.http{}中添加
include /usr/local/openresty/nginx/conf/mime.types;
default_type application/octet-stream;
2.或者修改mime.types中css的type為application/octet-stream;
原因:互聯(lián)網(wǎng)中web服務器與瀏覽器通訊時,所有數(shù)據(jù)都是需要指定文件類型(type)的,否則瀏覽器不知道用什么插件來處理這些數(shù)據(jù),比如音頻數(shù)據(jù)就要指定mid,.midi audio/midi,audio/x-midi等類型。
而我的服務器中的css文件在被nginx代理后,nginx找了原來html中對該css文件的type定義:
沒有type?。?!
所以就報錯了!nginx不知道用什么編碼方式傳輸這類文件(它是不知道啥css的)
所以定義default_type application/octet-stream 后,nginx不管是什么文件類型,同意按字節(jié)流的類型進行轉(zhuǎn)發(fā),這樣才最后傳輸?shù)娇蛻舳藶g覽器上。
那么問題來了,既然nginx那邊是以字節(jié)流轉(zhuǎn)發(fā)給了瀏覽器,瀏覽器不知道這是css文件,只是一堆字節(jié)流,為什么還能被加載出來?
因為現(xiàn)在主流瀏覽器也能默認識別出css文件的,很多開發(fā)者已經(jīng)習慣不給css寫這東西了,但是對于很多特殊的數(shù)據(jù)類型,最好還是定義一下。
特別的,像nginx這類的代理,畢竟是輕量級的,沒有瀏覽器那么強大的識別能力,所以,為了考慮兼容性,開發(fā)者還是應該嚴謹一點!真的想吐槽!這個問題卡了我整整一個下午!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。