Estou tentando executar vários aplicativos nodejs (usando o framework expresso) todos servidos na mesma porta externa (80), mas cada um sob um subdiretório.
Por exemplo Eu quero ...
NodeJsApplication1 estará disponível no link
NodeJsApplication2 estará disponível em link
etc.
Eu tentei usar o Nginx como proxy com um conf semelhante ao seguinte.
server {
listen 80;
server_name www.mydomain.com;
location / {
root /var/www/html;
index index.html index.htm;
}
location /NodeJsApplication1/ {
proxy_pass http://0.0.0.0:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite /NodeJsApplication1/(.*) /$1 break;
}
location /NodeJsApplication2/ {
proxy_pass http://0.0.0.0:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite /NodeJsApplication2/(.*) /$1 break;
}
}
Isso funciona para acessar a página, mas quebra todas as URLs relativas na página de retorno. Todos os scripts e csss estão apontando para a raiz (por exemplo, www.mydomain.com/styles/main.css).
Eu sei que posso usar vários subdomínios, mas não quero percorrer esse caminho. Eu preferiria ter um proxy de subpasta, então tudo é feito em software e não preciso configurar nenhum registro de DNS para cada aplicativo.
Isso é possível?
Atualizar
Dentro dos próprios aplicativos, todos os links estão usando caminhos relativos. Por exemplo:
Mas quando processado, o navegador os trata como "www.mydomain.com/styles/main.css" em vez de "www.mydomain.com/NodeJsApplication1/styles/main.css".
sendo o primeiro para modificar os aplicativos NodeJS para especificar uma URL completa, mas isso requer que o aplicativo conheça o subdiretório com o qual o nginx está configurado e destrói a portabilidade para outro ambiente.