将nginxconfiguration为反向代理

我正在使用nginx的Passenger在虚拟Slice主机上为我的Rails应用程序服务。 我正在考虑放置一个反向代理服务静态内容以及处理etagged行动。

  1. 我可以使用现有的nginx安装,只需将其更改为反向代理? 我甚至需要一个Web服务器? 在这种情况下,典型的架构是什么样的?

    nginx rev-proxy -> nginx web server -> passenger? 

    要么

     nginx rev-proxy -> passenger? 
  2. 在这种情况下,nginx是最好的select吗?

  3. 我的反向代理可以驻留在同一个切片?

谢谢

  1. 是的,你可以使用你的nginx安装。 你根本不需要代理,只需要继续使用nginx和nginx服务器的静态内容

  2. stream行的意见可能是,如果你有Apache或Squid运行,你可能会考虑使用它们,但既然你已经有了nginx,nginx是一个不错的select。 避免使用乘客服务静态文件可能会提供显着的性能提升 – 但当然你的milage会有所不同。

  3. 相同的服务器/切片可能很好,如果你的stream量太大,以至于会产生影响,肯定会把它移动到另一台服务器上,但是没有理由去代理它,只需要改变这个URL即可。

示例configuration文件将是:

 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; } 

}

显然,根据需要添加任何其他文件types。