【问题标题】:Using unicorn or passenger without nginx? [duplicate]在没有 nginx 的情况下使用独角兽或乘客? [复制]
【发布时间】:2014-06-07 02:20:36
【问题描述】:
我一直在阅读rails 部署,似乎对于我正在考虑的两个选项unicorn 和passenger,教程总是将它们放在像nginx 这样的服务器后面。我假设unicorn 和passenger 本身都是功能齐全的Web 服务器。所以
- 为什么他们总是放在
nginx之类的后面?
- 如果我使用负载均衡器
nginx 或HAProxy,我可以让负载均衡器直接将请求分发到unicorn 或passenger,还是我仍然必须将它们放在nginx 后面?李>
【问题讨论】:
标签:
ruby-on-rails
nginx
passenger
load-balancing
unicorn
【解决方案1】:
Unicorn 必须放在 Nginx 后面,by its author's design。 Phusion Passenger Design & Architecture 文档解释了为什么某些应用服务器被设计为放置在 Nginx 后面。基本上,它与 I/O 并发处理和 I/O 安全有关。
Phusion Passenger 但是不需要放在 Nginx 后面。 Phusion Passenger 将 Nginx 集成为 Nginx 模块。即使是 Phusion Passenger 的 Standalone 模式也不需要放在 Nginx 之后,因为它的 Standalone 模式利用了轻量级的 Nginx 内核,因此已经很好地实现了 I/O 安全性。
如果您使用 HAProxy,只要您将 HAProxy 配置为执行请求和响应缓冲,就可以让它直接连接到 Unicorn。对于独角兽来说,缓冲是关键。另一方面,Phusion Passenger 并不关心,无论您是否配置缓冲,它都能正常工作。