8

TL/DR:我的主要问题:是否值得我花时间尝试将 NGinx 添加到我的 Django/Gunicorn/Cedar/PostgresSql 应用程序中,或者 Heroku 是否为我做了这种类型的性能改进?

在 Cedar 文档 (https://devcenter.heroku.com/articles/cedar) 中,它明确指出 cedar 不支持反向代理。“Cedar 不包含 Varnish 等反向代理缓存,更愿意让开发人员选择最能满足其需求的 CDN 解决方案。”

再次在路由文章 (https://devcenter.heroku.com/articles/http-routing#gzipped-responses) 中,指定 nginx 不会自动完成:'由于对 Cedar 应用程序的请求是直接向应用程序服务器发出的– 不通过像 nginx 这样的 HTTP 服务器代理 – 响应的任何压缩都必须在您的应用程序中完成。”

但是,在 Python 常见问题解答中,它另有说明:https://devcenter.heroku.com/articles/python-faq#do-python-applications-run-behind-nginx “不。不需要使用反向代理在 Heroku 上,因为 Heroku 云平台会处理这些服务器通常为您做的所有事情。

您的应用程序只是提供了一个 Python 服务器来响应 HTTP 请求。Gunicorn、Gevent 和 Eventlet 是很好的选择。

由于 Web 服务器嵌入在您的应用程序中,因此您可以在任何环境中轻松测试和调试完全相同的代码。这种开发和生产平价让您在开发周期中轻松解决问题。”

在我看来,Heroku 处理了反向代理的一些好处,但没有压缩。真的吗?

4

1 回答 1

5

收到 Heroku 支持的回复:

我们不建议尝试将 nginx 添加到您的堆栈中,Heroku 也不提供该层。但是你是正确的,如果你想压缩响应,你的应用程序必须压缩响应 - 这通常在应用程序框架(例如 Ruby 的 Rack)中作为中间件层处理。gzip 非常快,这不会给您的请求增加任何明显的延迟。

这确认您不需要在 Heroku 上运行 Nginx 的反向代理功能。

于 2012-10-15T04:17:50.157 回答