Nginx Reverse Proxying para Node.js com Rewrite

Eu tenho vários aplicativos em execução por trás de um proxy reverso Nginx, um dos quais é um servidor Node com Express.js. Estou proxyingdomain.com/demo/app/<path> paralocalhost:7003/<path> usando esta configuração Nginx:

http {

    ...

    server {

        listen 80;
        server_name domain.com;

        ...

        location /demo/app {

            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_set_header X-Scheme $scheme;

            rewrite ^/demo/app/?(.*) /$1 break;
            proxy_pass http://localhost:7003;
        }

        ...
    }
}

Isso funciona muito bem eapp recebe solicitações como se elas estivessem enraizadas/. O problema éapp lida com seus próprios arquivos estáticos e pode fazer solicitações de rotas comocss/app.css ouimages/image.jpg. Mas por causa do proxy reverso, estes realmente existem em/demo/app/css/app.css e/demo/app/images/image.jpg respectivamente.

Eu resolvi isso fazendo com que o Nginx passasse para o Node um cabeçalho personalizado indicando o caminho da raiz, que o servidor do Nó prepends para as URLs de todas as solicitações subseqüentes. Mas agora meu código está cheio dessas cadeias de caminho raiz. Por exemplo, parte dos meus modelos de backend:

link(rel='stylesheet', href="#{basePath}/css/base.css")
link(rel='stylesheet', href="#{basePath}/css/skeleton.css")
link(rel='stylesheet', href="#{basePath}/css/layout.css")

O que é uma maneira mais elegante de lidar com isso? Existe uma maneira de obter o Nginx para reconhecer solicitações vindas de um servidor upstream e encaminhá-las automaticamente para esse servidor?

questionAnswers(1)

yourAnswerToTheQuestion