Redireciona um subcaminho para um host externo com Nginx

8

Eu preciso criar um mapa bastante simples no Nginx redirecionando um subcaminho para outro servidor localizado na mesma sub-rede.

  • Servidor Nginx: 192.168.0.2
  • Servidor Tomcat: 192.168.0.3:8443

Eu tentei colocar isso na seção do servidor

    location /tomcatapi/ {
        rewrite /tomcatapi/(.*) $1 break;
        proxy_pass http://192.168.0.3:8443;
    }

mas tudo que eu obtenho acessando link é uma página de erro 500 e no arquivo de log nginx eu tenho este erro:

    the rewritten URI has a zero length

O que eu sinto falta neste conf?

    
por carlo.polisini 01.08.2013 / 12:07

1 resposta

10

Vamos ver sua linha de reescrita:

rewrite /tomcatapi/(.*) $1 break;

Você está pegando o bit entre colchetes (ou seja, tudo após /tomcatapi/ ), que é atribuído a $1 e usando isso como o único conteúdo de seu URI reescrito.

No seu exemplo, não há nada após /tomcatapi/ , então a reescrita termina vazia, e é isso que o nginx está reclamando.

Se você alterar a regra de reescrita para

rewrite /tomcatapi/(.*) /$1 break;

você sempre terá pelo menos / na saída de reescrita.

    
por 01.08.2013 / 12:51