系統架構 - 關於nginx架構處理靜態檔案的一個疑問
滿天的星座
滿天的星座 2017-05-16 17:24:18
0
2
497

最前面是2台nginx伺服器N1,N2用keepalive做高可用
後端是4台tomcat T1,T2,T3,T4做叢集(使用memcached解決session共享問題)

程式碼裡面會有一些js/css等靜態文件,比較好處理,可以在這6台伺服器間原始碼同步。

系統會上傳大量的pdf/doc這樣的文件,並且需要轉換成swf格式以供以後預覽,所以用T3,T4來專門處理。其它普通業務交給T1,T2

那麼問題來了,客戶端要存取一個pdf或swf文件,請求發給nginx,這裡肯定不能攔截下來,因為本地只有js/css這類靜態文件,沒有doc/pdf,於是用location proxy_pass到T3,T4,但T3,T4上只有tomcat,它處理靜態檔案效率絕對不行。怎麼辦?

我的思路有兩種:

  1. 使用共享檔案系統,但穩定性有待考察
  2. 後端再用一個apache

不知道大家是怎麼解決的?

滿天的星座
滿天的星座

全部回覆(2)
習慣沉默

這個問題是要沉沒了嗎?這個場景應該很多,有現成的可以參考的解決方案吧

给我你的怀抱

最簡單的方式應該是給doc/pdf資源指定一個新域名或子域名,配置nginx,對新域名的請求全部轉發到t3,t4上。

不過你這裡有一個問題,如果使用者上傳檔案到t3,然後下次造訪這個檔案時nginx將請求轉送到t4怎麼辦?
所以,t3和t4是不是有同步機制?
解決這個辦法又有一些辦法:
1,照你說的使用共享檔案系統,samba之類的,t3、t4的檔案都上傳到這裡
2,手動在兩台機器間同步文件,好處是資料相當於有了備份,壞處就不說了
3,試試看又拍之類的使用cdn吧,這樣連你最開始的問題都能解決
4,。 。 。 。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板