Nginx, Weblogic e proxy reverso por caminho

Nginx, Weblogic e proxy reverso por caminho

Estou tendo problemas para fazer meu proxy reverso funcionar ao usar um caminho no nginx. O que estou tentando fazer é ter um endereço para um aplicativo e ditar o ambiente com o caminho. Dependendo do caminho, apontaria para um servidor diferente. Consigo fazer o proxy reverso funcionar ao usar um link direto, mas usar um caminho está recebendo um erro 404.

app.foo.bar/dev = erro 404 devapp.foo.bar = sucesso

O que fiz de errado em app.foo.bar/dev ?

Aqui está a configuração do proxy reverso que está funcionando, mas prefiro não usar:

server  {
  listen  80;   # DEV Application Proxy
  server_name  devapp.foo.bar;
  location  / {
    proxy_pass  http://appserver.foo.bar:7010;
    proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        port_in_redirect off;
        proxy_redirect   http://appserver.foo.bar:7010/ /;
        proxy_connect_timeout 300;
    }
  }

Aqui está uma parte do que desejo fazer usando o caminho, mas obtendo o erro 404.

# APP Environment Proxy

server {

  listen 80;
  server_name app.foo.bar;
     location /dev {
      proxy_pass http://appserver.foo.bar:7010;
      proxy_set_header    Host            $host;
      proxy_set_header    X-Real-IP       $remote_addr;
      proxy_set_header    X-Forwarded-for $remote_addr;
      port_in_redirect off;
      proxy_redirect     http://appserver.foo.bar:7010 /;
      proxy_connect_timeout 300;

  }
}

Pesquisei esse tipo de configuração no Google, mas não consigo encontrar uma solução. Agradecemos antecipadamente por qualquer ajuda.

Responder1

Quando você tiver proxy_pass http://appserver.foo.bar:7010;, o nginx anexa o URI normalizado ao URL de solicitação passado ao back-end.

Então, quando você solicita http://app.foo.bar/dev, a solicitação vai para http://appserver.foo.bar:7010/dev. Se o seu servidor de desenvolvimento não tiver esse caminho, ele retornará 404, que o nginx retorna ao cliente.

Se você quiser que todas as solicitações começando por http://app.foo.bar/devirem http://appserver.foo.bar:7010para que todo o restante do URI seja adicionado ao URI do servidor back-end, você poderá usar esta configuração:

location ~ ^/dev(.+)$ {
    proxy_pass http://appserver.foo.bar:7010$1$is_args$args;
    ...
}

Então, capturamos a parte posterior /devcom regex em uma variável e então adicionamos essa variável ao final do proxy_passcaminho.

informação relacionada