我在 Heroku 上有一个小站点,目前正在使用 Thin。我对 Unicorn 有模糊的认识,但从来没有觉得我有符合其“快速客户端”规定的东西。
自述文件和此链接表明我们仅在 LAN 上使用 Unicorn(或者可能是 Lambdarail),但似乎很多人将它用于通过普通宽带甚至移动网络访问的典型站点。这是真的?是什么赋予了?
我在 Heroku 上有一个小站点,目前正在使用 Thin。我对 Unicorn 有模糊的认识,但从来没有觉得我有符合其“快速客户端”规定的东西。
自述文件和此链接表明我们仅在 LAN 上使用 Unicorn(或者可能是 Lambdarail),但似乎很多人将它用于通过普通宽带甚至移动网络访问的典型站点。这是真的?是什么赋予了?
Unicorn 通常用于网络服务器/代理(如 Nginx)后面,它从实际客户端接收 HTTP 连接,提供静态资产并将动态请求转发到后端服务器(Unicorn)。
Web 服务器现在充当 Unicorn 的客户端。因为 Nginx(在大多数情况下是 Apaches mod_proxy)充当存储转发代理。即,他们将首先缓冲完整的响应(或至少与其缓冲区一样多),然后再将其发送给客户端。这非常符合 Unicorn 对快速客户端的定义。它将缓存和向慢速客户端提供数据的艰巨任务交给了网络服务器,这些客户端无论如何都必须这样做,因此可能会做得更好。
它还建议您可能不应该直接面向客户端运行 Unicorn(除非您的客户端快速消耗数据(例如,在具有非拥塞客户端和网络的 LAN 上)。
我们在 heroku 上使用 unicorn 并取得了不错的效果。独角兽网站没有区分的是,独角兽服务动态数据与静态资产之间存在差异。如果您将资产服务卸载到 CDN,那么在前面有或没有 nginx 的独角兽没有太大区别。一旦警告这一点 - 原始独角兽很容易受到“故意”慢客户端的攻击,例如可能在 DDoS 或其他黑客尝试中引入。