nginx:为不同的path使用不同的服务器

我有两个Rails应用程序坐在同一台机器上的两个不同的URI后面。 nginxconfiguration适用于自己的configuration文件中的每个应用程序。

现在其中一个应用程序必须慢慢合并到第二个应用程序中。 在URIpathapplication-one.com/register下有一个可访问的端点。 我只想要这个application-one.com/registerpath访问第二个应用程序和所有其他path(application-one.com/* except /register)仍然访问第一个应用程序。

有没有办法做到这一点,而不使用301redirect,因为我不能在我的情况下使用它们?

示例configuration文件如下所示:

 upstream unicorn_application_one { server unix:/tmp/unicorn_application_one.sock fail_timeout=0; } server { client_max_body_size .... ... server_name application-one.com root /home/deployer/application_one/current/public; try_files $uri/index.html $uri @unicorn_application_one; location @unicorn_application_one { proxy_set_header ... .... } location ^~ /assets/ { ... } .... } 

编辑:

我试过@joaumg的方法,但我不得不改变它:

每当我提取上游到外部文件,我得到了duplicate upstream错误。

所以我只是把@ joaumg的代码改成了:

 location /register { proxy_pass http://unix:/tmp/unicorn_application_two.sock; } 

有没有办法做到@joaumg告诉没有重复的上游错误?

一个可能的例子(未经测试):

cat upstreams.conf

 upstream unicorn_application_one { server unix:/tmp/unicorn_application_one.sock fail_timeout=0; } upstream unicorn_application_two { server unix:/tmp/unicorn_application_two.sock fail_timeout=0; } 

cat server_one.conf

 include upstreams.conf; server { client_max_body_size .... ... server_name application-one.com root /home/deployer/application_one/current/public; location /register { proxy_pass @unicorn_application_two; } try_files $uri/index.html $uri @unicorn_application_one; location @unicorn_application_one { proxy_set_header ... .... } location ^~ /assets/ { ... } .... }