我有两个Rails应用程序坐在同一台机器上的两个不同的URI后面。 nginxconfiguration适用于自己的configuration文件中的每个应用程序。
现在其中一个应用程序必须慢慢合并到第二个应用程序中。 在URIpathapplication-one.com/register
下有一个可访问的端点。 我只想要这个application-one.com/register
path访问第二个应用程序和所有其他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/ { ... } .... }