Proxy inverso nginx para pasar el subdominio en la URL al backend

Proxy inverso nginx para pasar el subdominio en la URL al backend

Con nginx, ¿es posible enviar una URL entrante para que mi aplicación React la "vea" de manera diferente al usuario para manejar variables de datos a través de React Router?

Por ejemplo, un usuario iría a https://foo.app.live.comy mi aplicación vería la solicitud entrante como http://localhost:3000/foo.

Algunos ejemplos más:

  • https://foo.app.live.com===http://localhost:3000/foo
  • https://foo.app.live.com/login===http://localhost:3000/foo/login
  • https://foo.app.live.com/event/1===http://localhost:3000/foo/event/1

He probado con este bloque, el URI completo se agrega al final del dominio:

location /(.*)$ {
  proxy_pass http://localhost:3000/$1;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "";
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

¿Qué me estoy perdiendo?

Respuesta1

Puede hacerlo utilizando la directiva de reescritura con el indicador de interrupción en el bloque de ubicación. En tu caso sería:

rewrite (.*) /foo$1 break;

Con esta configuración, su URI cambiará, pero solo para el servidor ascendente y el usuario no lo notará. Para obtener más detalles, consulte la documentación de nginx aquí:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html Gracias

Respuesta2

Intente usar esta versión:

location / {
    proxy_pass http://localhost:3000/foo$uri;
    proxy_http_version 1.1;      
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "";
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

información relacionada