Tengo una aplicación con dos repositorios de github, uno para reaccionar y otro para la aplicación Rails. El requisito es que todas las rutas deben ir al servidor de Rails, excepto las rutas que comienzan con /catalog deben ir a la aplicación React. El servidor de la aplicación Rails se comunicará con React Server internamente. SSL está configurado en el nivel de Nginx.
He creado 3 aplicaciones diferentes en heroku:
La configuración de mi servidor nginx se ve así:
upstream rails { server $HEROKU_APP_rails_URL; } upstream react { server $HEROKU_APP_react_URL; } server { listen $PORT; server_name *.xyz.com; # large_client_header_buffers 4 32k; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://rails; } location /catalog { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://react; } }Con la configuración anterior, recibo un error HTTP 400 en Nginx y no puedo redirigir la solicitud. Por favor, hágame saber qué estoy haciendo mal.
Finalmente logré resolver este problema. Mi configuración de nginx parece
upstream upstream_app_a { server app_a.herokuapp.com:443; } upstream upstream_app_b { server app_b.herokuapp.com:443; } server { listen $PORT; location / { set $upstream upstream_app_a; proxy_pass https://$upstream; proxy_ssl_name app_a.herokuapp.com; proxy_set_header x-forwarded-host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host app_a.herokuapp.com; } location /static { set $upstream upstream_app_b; proxy_pass https://$upstream/static; proxy_set_header Host app_b.herokuapp.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /product_catalog { set $upstream upstream_app_b; proxy_pass https://$upstream; proxy_ssl_name app_b.herokuapp.com; proxy_set_header x-forwarded-host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host app_b.herokuapp.com; } }Asegúrese de establecer el valor correcto para el encabezado
proxy_set_header Host app_a.herokuapp.comLogramos resolver este problema consultando el artículo