loadbalancing com diferença contexto de localização nginx e contexto do servidor backend

2

Eu usei o módulo nginx e upstream para balanceamento de carga com a seguinte configuração

upstream lb {
  server 127.0.0.1:8080;
  server 127.0.0.1:8081;
 }
 server {
  listen 88;
  server_name localhost;

  location /cas/ {
    proxy_pass              http://lb;
    proxy_redirect          off;
    proxy_connect_timeout   2;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

o problema é que o "local / contexto /" tem que corresponder ao contexto do servidor backend, então quando eu solicitar localhost / context / index.html, então o nginx o encaminha para 127.0.0.1:8080/context/index.html ou 127.0.0.1:8080/context/index.html.

É possível ter o contexto de back-end e a localização do nginx, por exemplo, com "location /" O nginx encaminhará a solicitação para 127.0.0.1:8080/context/index.html ou 127.0.0.1:8080/context/index.html

Obrigado.

    
por robinmag 14.05.2010 / 14:58

1 resposta

1

Você pode ter várias declarações de localização, cada uma com seu próprio upstream

location /cas/ {
  proxy_pass              http://lb; 
  }

location /web/ {
    proxy_pass              http://2b;    
  }

location /mail/ {
    proxy_pass              http://3b;    
  }

Você também pode usar instruções if que verifiquem a variável $ request_uri e a use para decidir a qual upstream deve passar a solicitação.

if ($request_uri ~* "^/(.+?)/context")
{
  proxy_pass   http://domain.com$request_uri;
  break;
}
    
por 12.03.2011 / 19:16