Erro ao configurar o nginx para vários aplicativos ReactJS no mesmo servidor?

Erro ao configurar o nginx para vários aplicativos ReactJS no mesmo servidor?

Estou construindo uma solução com vários módulos. Cada módulo é um aplicativo ReactJs e estou tentando configurar o nginx para publicá-lo no mesmo domínio. Por exemplo:

http://domínio-aplicativo/autenticação
http://domínio-aplicativo/administrador
http://domínio-aplicativo/painel
http://domínio-aplicativo/vendas

Meu diretório público para nginx fica assim:

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

onde auth, admin, dashboard e sales são subpastas para cada projeto.

Minha configuração do 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;
 }
}

A subpasta de cada projeto tem uma estrutura semelhante a esta

insira a descrição da imagem aqui

O problema é quando o acessohttp://domínio-aplicativo/admin, por exemplo, o aplicativo tenta carregar os arquivos estáticos na raiz em vez da subpasta do projeto

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

o correto seria obter arquivosadministradorsubpasta como esta:

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

Qual é a melhor abordagem para corrigir a configuração do nginx para isso?

Responder1

Acho que o que você está tentando realizar pode ser feito expandindo a seção raiz de cada local assim:

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

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

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

Mas isso seria o mesmo que ter apenas

location / {
  root /var/www/
}

Já que uma chamada para http://application-domain/adminseria avaliada como /var/www/admin.

A primeira solução ocultaria qualquer outra coisa, /var/www/pois não há regra de localização para acessar, digamos http://application-domain/private.

informação relacionada