2012-08-11 4 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를 (따라 각 서버의 try_files 지시어를 변경하는 것을 잊지 마세요) ? 그것이 틀림 없다고 확신합니까? – freestyler

+0

@freestyler oops, 고정되어 있습니다. 포트가 다릅니다. 말이 돼? – samvermette

+1

이름이 지정된 위치가 서버간에 공유되지 않았습니까? 2로 파일을 분할하면 도움이 될 수 있습니다. 또는 \ @ backend1, \ @ backend2를 명명 된 위치로 사용해보십시오. –

답변

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

동일한 서버 주소를 가지고 thin2

0

각 호스트 이름에 대해 별도의 서버 구성을 설정하고 각 호스트에 적합한 백엔드로 전달하십시오.

+1

마음을 공유하는 코드가 있습니까? 그게 내 설정 파일이 지금하는 일입니다. 나는 그것을 2 개의 다른 파일로 나누는 것이 어떻게 달라지는지를 보지 못했다 ... – samvermette

관련 문제