【发布时间】:2016-12-09 12:06:49
【问题描述】:
我有两个 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 所说的方式做到这一点而不会出现重复的上游错误?
【问题讨论】:
-
您可以根据服务器块中的路径使用内部重定向。
-
感谢@joaumg。你能发布一个例子吗?
标签: ruby-on-rails nginx server