首頁  >  問答  >  主體

系統架構 - 關於nginx架構處理靜態檔案的一個疑問

最前面是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

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

滿天的星座滿天的星座2736 天前482

全部回覆(2)我來回復

  • 習慣沉默

    習慣沉默2017-05-16 17:26:18

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

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:26:18

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

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

    回覆
    0
  • 取消回覆