¿Error al configurar nginx para varias aplicaciones ReactJS en el mismo servidor?

¿Error al configurar nginx para varias aplicaciones ReactJS en el mismo servidor?

Estoy creando una solución con varios módulos. Cada módulo es una aplicación ReactJs y estoy intentando configurar nginx para publicarlo en el mismo dominio. Por ejemplo:

http://dominio-aplicación/autenticación
http://dominio-aplicación/administración
http://dominio-aplicación/panel
http://dominio-aplicación/ventas

Mi directorio público para nginx permanece así:

|---/var/www
|----/auth
|----/admin
|----/dashboard
|----/sales

donde autenticación, administrador, panel y ventas son subcarpetas para cada proyecto.

Mi configuración del servidor nginx:

server {
 listen 9000 default_server;
 listen [::]:9000 default_server;
 server_name localhost;

 index index.html;

 location / {
    root /var/www/auth;
 }

 location /admin { 
   root /var/www;
 }

 location /dashboard {
   root /var/www;
 }

 location /sales {
   root /var/www;
 }
}

La subcarpeta de cada proyecto tiene una estructura similar a esta

ingrese la descripción de la imagen aquí

El problema es cuando se accedehttp://dominio-aplicación/admin, por ejemplo, la aplicación intenta cargar los archivos estáticos en la raíz en lugar de en la subcarpeta del proyecto

GET http://localhost:9000/static/js/main.6314dcaa.js net::ERR_ABORTED

lo correcto sería obtener archivos enadministraciónsubcarpeta como esta:

GET http://localhost:9000/admin/static/js/main.6314dcaa.js

¿Cuál es el mejor enfoque para corregir la configuración de nginx para esto?

Respuesta1

Creo que lo que intentas lograr se puede lograr expandiendo la sección raíz de cada ubicación de esta manera:

 location /admin { 
   root /var/www/admin;
 }

 location /dashboard {
   root /var/www/dashboard;
 }

 location /sales {
   root /var/www/sales;
 }

Pero eso sería lo mismo que tener sólo

location / {
  root /var/www/
}

Dado que una llamada a http://application-domain/adminse evaluaría como /var/www/admin.

La primera solución ocultaría cualquier otra cosa, /var/www/ya que no existe una regla de ubicación para acceder, por ejemplo http://application-domain/private.

información relacionada