簡體   English   中英

AWS和Node.js,我需要nginx還是apache?

[英]AWS and Node.js, do I need nginx or apache?

我確實在serverfault上發布了這個,但沒有獲得任何視圖或響應。

我在這里閱讀了一些關於在使用Node.js時是否需要網絡服務器的帖子,並且答案似乎總是提供靜態文件。

我的問題是這個。 如果我正在處理的網站主要是動態的,我不能只使用Node.js作為服務器和動態部分,然后將所有靜態文件(css,js,images等)放在CloudFront上為它們服務嗎? 這樣我就不用擔心緩存(通過清漆或redis或者你有什么),或運行像nginx這樣的http服務器並通過代理來訪問Node.js(我讀過這會導致socket.io出現問題) )。

在類似的話題中,亞馬遜的ELB是否足以作為負載均衡器,或者如果站點足夠大以需要負載均衡,我還需要做其他事情嗎? 提前致謝!

我不能明確地談論node.js架構決策,但我可以解決您的CloudFront和ELB問題。

CloudFront是靜態資產的絕佳CDN,但有一些問題。 俗話說“計算機科學只有兩個難題:緩存失效和命名事物。” 如果要使用具有相同名稱但更新的資產替換靜態資產,則必須開始使用cache-control-headers,這將確定任何給定CF節點緩存資產的時間。 如果將CF設置得太低,在CF中緩存幾乎沒有什么優勢。 這是一種痛苦,我強烈建議您對資產進行版本控制,並以同時部署資產和更新資產引用的方式設置應用程序。 此時,無法通過API調用或其他方法手動使對象的緩存從CF到期。

至於ELB縮放:是的。 使用它們。 Netflix確實如此,如果可以,也可以。 ELB使用的關鍵是了解它們在應用程序流量中的作用:您希望它們具有高可用性,這意味着在多個可用區域中維護一組Web服務器,並確保ELB已正確配置以實現它們。 事實上,Netflix最近開源了他們的雲管理應用程序 “Asgard”。 我建議檢查一下。 鏈接的博客文章對ELB的使用有很好的解釋,而Asgard看起來像是一種管理雲部署而不需要停機的好方法。

如果您使用像Express這樣的Node.js框架,則可以輕松指定靜態文件所在的位置,從而允許您使用CDN。 你可以簡單地使用像express cdn這樣的東西 如果您需要負載平衡,有幾種方法可以處理它,但EBS很可能就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM