2012-08-11 71 views
0

我有2个Rails应用程序运行在同一台服务器上。我想要将domain1.com的请求转发到我的Rails1应用程序,并且domain2.com请求我的Rails2应用程序。我配置我的nginx.conf像这样:一个Nginx,2个应用程序/域

upstream thin1 { 
    server 0.0.0.0:3000; 
    server 0.0.0.0:3001; 
    server 0.0.0.0:3002; 
} 

upstream thin2 { 
    server 0.0.0.0:3003; 
    server 0.0.0.0:3004; 
    server 0.0.0.0:3005; 
} 

server { 
    listen   80; 
    server_name  *.domain1.com; 
    root   /path1/;   

    location/{ 
     try_files $uri/index.html $uri.html $uri @backend; 
    } 

    location @backend { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://thin1; 
    } 
} 

server { 
    listen     80; 
    server_name    *.domain2.com; 
    root     /path2/; 

    location/{ 
     try_files $uri/index.html $uri.html $uri @backend; 
    } 

    location @backend { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://thin2; 
    } 
} 

但是,所有的请求(domain1.com和domain2.com)被转发到我的Rails1应用程序。任何想法?

+0

上游thin1和thin2具有相同的服务器地址?你确定它是正确的吗? – freestyler 2012-08-11 06:19:19

+0

@freestyler oops,修正了这个问题。端口是不同的。那有意义吗? – samvermette 2012-08-11 06:26:37

+1

您确定\ @backend命名的位置不在服务器之间共享吗?将文件分割为2可能会有所帮助。或者尝试使用\ @ backend1,\ @ backend2作为命名位置。 – 2012-08-11 09:33:53

回答

0

使用您的命名位置2个不同的名字应该修复它:

location @backend1 { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://thin1; 
} 

location @backend2 { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://thin2; 
} 

(不要忘了相应地改变每个服务器的try_files指令)

0

为每个主机名设置一个单独的服务器配置,并转发到每个主机的相应后端。

+1

介意分享一些代码?这几乎是我的配置文件现在所做的。我没有看到如何将它分成两个不同的文件会有所作为... – samvermette 2012-08-11 09:00:54

相关问题