O módulo de reescrita é apropriado para fazer proxy de diferentes rotas expressjs do nginx?

2

Eu tenho um servidor de nó expressjs em execução em um contêiner docker. Para este exemplo, ele tem apenas uma rota: GET /user que retorna um objeto JSON simples.

Eu também tenho um servidor nginx que faz proxy deste servidor expresso usando:

location /api {
    rewrite ^/api/(.*) /$1 break;
    proxy_pass http://nodeapp: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;
  }

No meu index.js , faço um XMLHttpRequest usando o url /api/user .

O módulo de reescrita, rewrite ^/api/(.*) /$1 break; , é uma solução válida para fazer proxy da rota no meu aplicativo expresso? Há alguma outra alternativa? Enquanto isso funciona, algo parece "desligado" para eu ter que usar expressões regulares para algo assim. Eu não faço o devops funcionar e só brinco com o nginx, então se houver uma solução melhor eu agradeceria se você pudesse me apontar na direção certa.

    
por adam-beck 11.12.2015 / 06:08

1 resposta

2

A adição simples de uma barra no seu local deve fazer nginx executar a mesma transformação implicitamente.

location /api/ {
    proxy_pass http://nodeapp: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;
}

Veja este documento para detalhes.

    
por 11.12.2015 / 10:36

Tags