Debian 6中用于Ruby on Rails应用程序的Phusion Passenger + Nginx虚拟主机配置

问题描述 投票:1回答:1

我的问题是如何使用Debian 6下的Phusion Passenger + Nginx将所有具有端口80的实例与适当的相同子域映射到以下场景。

注意:我是ruby on rails和服务器托管的新手,我无法表达我的愿景作为问题,请原谅我,如果我错了或纠正我。

嗨,我正在使用ruby on rails开发的一个产品,将在一个拥有32 GB Ram和8 Core Server Processor的专用服务器中托管。每个客户端都应该有单独的数据库和单独的rails实例。我正在复制 - 为每个客户端复制代码,使用单独的文件夹并提供不同的数据库名称,因此每个客户端都用作不同的实例。基本上所有客户端的源代码都相同,但只有数据库名称不同,所以我将源代码放入不同的文件夹,并为每个客户端盯着一个单独的rails应用程序。

例如:

我有一个主要的临时域名

www.product.com

对于每个客户端,我需要将单独的子域映射到具有相同端口(80)但具有不同的rails实例名称的相同服务器

www.client1.product.com
www.client2.product.com
www.clientn.product.com

据我所知,如果我启动rails实例,每个将从单独的端口no开始

client1 with start at port 3001
client2 with start at port 3002
client3 with start at port 3003

我的问题是如何在Debian 6下使用Phusion Passenger + Nginx将所有具有端口80的实例与适当的相同子域映射

如果我访问

www.client4.product.com,我需要让应用程序在3004端口运行

ruby-on-rails nginx virtualhost passenger
1个回答
1
投票

我希望你现在找到了解决方案,但是为了stackoverflow存档,我将提供一个答案。

通常意味着你应该使用反向代理(http://wiki.nginx.org/RubyonRailsMongrel)和nginx,而你的上游将是一个乘客|瘦|独角兽|挑选你最喜欢的服务器运行你的专用rails应用程序(我将使用重复的代码,以隔离你的客户端运行环境。)您将能够使用此方法提供负载平衡。

现在,您规定了Passenger的使用,如果您使用乘客扩展编译nginx,则可以使用非常简单的设置。 (去http://www.modrails.com/documentation/Users%20guide%20Nginx.html以获得更好的解释)

server {
  listen 80;
  listen [::]:80 default_server ipv6only=on; # please for a better world be IPv6 compliant !
      server_name www.client1.product.com;
  root /my/rails/app1;
      passenger_enabled on;
}
server {
  listen 80;
  listen [::]:80 default_server ipv6only=on;
      server_name www.client2.product.com;
  root /my/rails/app2;
      passenger_enabled on;
}

.......

© www.soinside.com 2019 - 2024. All rights reserved.