2012-03-01 103 views
0

我需要设置一个反向代理,将请求转发到正确的应用程序服务器。例如,有两个应用程序服务器在后台运行。一台服务器运行Rails,另一台运行Django。如果请求进入我的反向代理,它将把请求引导到Rails应用服务器。如果Rails应用服务器无法处理该请求,因为它不支持该请求,Rails应用服务器将返回一个404到反向代理,反向代理将请求指向Django应用服务器(应该是正确的)。设置反向代理

有没有人知道这个堆栈的好设置或者这个反向代理的好候选者? Ruby相关的东西很好,但不一定是。

回答

2
server { 
    Location/{ 
     error_page 404 /django$request_uri; 

     rewrite ^/django_specific_url_1$ /django$request_uri? last; 
     rewrite ^/django_specific_url_2$ /django$request_uri? last; 
     ... 
     rewrite ^/django_specific_url_n$ /django$request_uri? last; 

     proxy_pass http://127.0.0.1:ruby_port; 
    } 

    Location /django { 
     internal; 
     proxy_pass http://127.0.0.1:django_port$request_uri; 
    } 
} 
+0

谢谢。我有另一个问题使用相同的情况,但添加了一个额外的条件。你如何得到它,以便它总是将请求传递到服务器#2,如果它匹配一组特定的URL?谢谢! – RubyFanatic 2012-03-02 01:09:31

+1

我已修改问题以解决您的新查询。请注意,当你关注引入新条件的项目时,你应该为这些项目做一个新的和单独的查询。 – Dayo 2012-03-02 14:46:28

+0

非常感谢。几乎我所需要的! – RubyFanatic 2012-03-02 21:06:27