ruby on rails - rails - nginx: use un servidor diferente para una ruta diferente
ruby on rails nginx (1)
Un posible ejemplo (no probado):
gato 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;
}
gato 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/ {
...
}
....
}
Tengo dos aplicaciones de Rails ubicadas detrás de dos URI diferentes en la misma máquina. La configuración de nginx es para cada aplicación en un archivo de configuración propio.
Ahora una de las aplicaciones debe fusionarse lentamente en la segunda. Hay un punto final accesible bajo la ruta URI application-one.com/register
. Solo quiero que esta ruta application-one.com/register
acceda a la segunda aplicación y a todas las demás rutas (application-one.com/* except /register)
sigan accediendo a la primera aplicación.
¿Hay alguna manera de hacerlo sin usar 301 Redirects ya que no puedo usarlos en mi caso?
Un archivo de configuración de ejemplo se ve así:
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/ {
...
}
....
}
EDITAR:
Probé el enfoque de @joaumg pero tuve que cambiarlo:
Cada vez que extraje un archivo ascendente a un archivo externo, recibí un error duplicate upstream
.
Así que cambié la ubicación del código de @ joaumg a:
location /register {
proxy_pass http://unix:/tmp/unicorn_application_two.sock;
}
¿Hay alguna forma de hacerlo en la forma en que @joaumg dice sin tener un error duplicado de subida?