我正在嘗試使用Plack/Starman部署我的小型Catalyst Web應用程序。所有的文檔似乎暗示我想與nginx結合使用它。這有什麼好處?爲什麼不直接在端口80上使用Starman?爲什麼在Catalyst/Plack/Starman中使用nginx?
21
A
回答
34
它不必是特別nginx的,但你要某種前端服務器代理到您的應用程序服務器的幾個原因:
這樣就可以在運行服務器的催化劑高端口,作爲普通用戶,同時在端口80上運行前端服務器。
要爲靜態文件(像圖像,JS和CSS等普通資源以及任何類型的下載,您可能想要使用X - 發送文件或X-Accel-Redirect),而無需在下載期間綁定perl進程。
如果您想要轉向更復雜的配置,例如, Edge Side包括或讓web服務器直接從memcached或mogilefs(nginx可以執行的任何操作)或負載平衡/ HA配置中提供服務。
9
我問上#plack這個問題,並得到了@nothingmuch以下響應(我加了格式化):
nginx的,你可以設置 負載平衡/故障轉移類型的東西。如果 該網站很小/簡單,它可能是 矯枉過正。
我不知道任何 缺點斯塔曼可能有。 也許如果你有很多點擊 靜態文件nginx將使用較少的 cpu /內存來處理它們,但它的 不會在 典型的Web應用程序中顯着。儘管如此,大量下載可能會將Starman工作人員捆綁在靜態文件 下。 (也許不是,用 sendfile。)這就是我所能想象到的所有我 。
...如果您想要在沒有停機時間的情況下升級 ,故障轉移設置可以很好,因爲 會很好。 (「失敗」老 版本。)
3
另一個原因是一個輕量級前端服務器(即使Apache是OK)消耗每個連接比典型的接龍過程更少的內存(幾MB的與幾十或超過100 MB)。由於連接已打開一段時間,特別是如果要使用保持連接的連接,可以使用更少的RAM來支持大量的同時連接。只有確保代理前端服務器的緩衝區大小足夠大才能立即從後端加載典型的HTTP響應。然後後端可以自由處理下一個請求。
相關問題
- 1. 爲什麼在流星中使用NGINX?
- 2. 爲什麼Nginx默認使用'accept_mutex'''?
- 3. 爲什麼在使用Nginx時不會應用更改?
- 4. 爲什麼在NGINX/Cherokee/Lighttpd上使用Apache?
- 5. 爲什麼在nginx後面瘦了?
- 6. 爲什麼NGINX想要使用./logs/error.log作爲默認值?
- 7. 爲什麼使用nginx作爲websocket代理?
- 8. 爲什麼在NGINX中重寫這個不起作用?
- 9. 對Node.js使用Nginx有什麼好處?
- 10. 爲什麼在項目中使用'assert'? (爲什麼使用它這麼多次)
- 11. 上游在nginx中意味着什麼?
- 12. 當我使用nginx重寫時,爲什麼$ _SERVER ['SCRIPT_NAME']返回'index.php'?
- 13. 爲什麼麻煩使用Apache或Nginx等?
- 14. 使用沒有nginx的獨角獸不好嗎?爲什麼?
- 15. 爲什麼或者爲什麼不在C++中使用memset?
- 16. 爲什麼Nginx繼續返回301?
- 17. 爲什麼gzip_disable讓nginx崩潰?
- 18. 爲什麼nginx無法啓動?
- 19. 會有什麼RTMP網址爲nginx的
- 20. 爲什麼NGINX的upload_limit_rate無法工作?
- 21. Nginx上傳模塊中使用Hash有什麼用?
- 22. 爲什麼在nginx access.log中request_time比upstream_response_time大得多?
- 23. 爲什麼^〜不停止在nginx中處理路由規則?
- 24. 使用NGINX作爲RAILS應用程序的loadbalancer時使用什麼SSL證書
- 25. 爲什麼在使用Ruby
- 26. 爲什麼使用'|'在Java
- 27. 在TDD中,爲什麼要使用OpenEJB以及爲什麼使用Arquillian?
- 28. 爲什麼在GridView中使用SetEditRow?
- 29. 爲什麼在movia中使用%hiadj?
- 30. 爲什麼在initComponent中使用Ext.apply
我有一個後續問題,霍布斯:如果你使用的是一個框架,比如舞者或者催化劑,你爲什麼需要斯塔曼呢?你不能只將請求發送到Plack/Dancer提供的默認服務器嗎? – 2012-08-27 04:22:34
@Vijay Dancer使用的默認服務器,如果您運行服務器腳本而沒有使用'-f'或'-k'選項,則Catalyst一次只能處理一個請求,所以它對於生產來說並不好。另一方面,如果你用'-f'運行Catalyst服務器腳本,它使用的是Starman :) – hobbs 2012-08-27 04:27:21
啊,非常棒!這終於清除了我試圖理解的最後一件事。我在這裏寫下了我對nginx/starman/dancer堆棧的解釋(如果你有任何額外的評論/見解,我錯過了,我真的很感激他們):http://stackoverflow.com/questions/12127566/an-explanation -of最nginx的-接龍舞者 - 網絡堆棧 – 2012-08-27 04:34:55