![配置 nginx 作为反向代理](https://linux22.com/image/527111/%E9%85%8D%E7%BD%AE%20nginx%20%E4%BD%9C%E4%B8%BA%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86.png)
我正在使用 Passenger 和 nginx 在虚拟 Slice 主机上为我的 rails 应用程序提供服务。我正在考虑放置一个反向代理来提供静态内容以及处理 etagged 操作。
我可以使用现有的 nginx 安装并将其更改为反向代理吗?我甚至需要一个 Web 服务器吗?在这种情况下,典型的架构是什么样的?
nginx rev-proxy -> nginx web server -> passenger?
或者
nginx rev-proxy -> passenger?
在这种情况下 nginx 是最佳选择吗?
我的反向代理可以驻留在同一个切片上吗?
谢谢
答案1
是的,您可以使用您的 nginx 安装。您根本不需要代理,只需继续使用带有 nginx 的 Passenger 并让 nginx 服务器直接访问静态内容
普遍的看法是,如果您正在运行 Apache 或 Squid,您可能会考虑使用它们,但由于您已经有了 nginx,因此 nginx 是一个不错的选择。避免使用 Passenger 来提供静态文件可能会带来显著的性能提升 - 但当然您的里程会有所不同。
相同的服务器/切片可能没问题,如果您的流量太大以至于产生影响,当然可以将其移至另一台服务器,但没有理由代理它,只需相应地更改 URL - 这就是 serverfault 所做的。
示例配置文件如下:
server {
listen www.example.com:80;
server_name www.example.com;
location ~* ^.+\.(jpg|jpeg|gif|png|css|bmp|js|ico|swf)$ {
root /home/static/files;
expires 7d;
}
location / {
root /home/rails_app;
passenger_enabled on;
}
}
显然,请根据需要添加任何其他文件类型。