我有两个Rails应用程序位于同一台机器上的两个不同的URI后面。 nginx配置适用于自己的配置文件中的每个应用程序。
现在其中一个应用程序必须慢慢合并到第二个应用程序中。在URI路径application-one.com/register
下可以访问端点。我只希望此application-one.com/register
路径访问第二个应用程序,而所有其他路径(application-one.com/* except /register)
仍在访问第一个应用程序。
有没有办法在不使用301重定向的情况下执行此操作,因为我无法在我的情况下使用它们?
示例配置文件如下所示:
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告诉的方式执行此操作而不会出现重复的上游错误?
答案 0 :(得分:1)
一个可能的例子(未经测试):
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/ {
...
}
....
}