反向代理的设置

时间:2012-03-01 03:41:54

标签: ruby-on-rails ruby nginx reverse-proxy

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

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

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:1)

我使用Squid作为我的反向代理。效果很好。 http://wiki.squid-cache.org/SquidFaq/ReverseProxy