Como passar o tráfego SSL do Apache através do proxy nginx?

1

Eu quero configurar o nginx 0.6.33 no Fedora 8 como um balanceador de carga para back-ends que executam o Apache. Eu não tive problemas para configurá-lo para a porta http padrão 80, mas não sei como fazer isso para SSL (443). Eu não quero instalar os certificados SSL na caixa nginx, eu gostaria que ele passasse todo o tráfego para os servidores Apache que possuem os certificados já instalados.

Minha configuração é assim:

http {
  upstream backend{
    server 192.168.0.1;
    server 192.168.0.2;
  }

  upstream secure{
    server 192.168.0.1:443;
    server 192.168.0.2:443;
  }

  server{
    listen 80;
    server_name www.my-server.net;
    location / {
      proxy_pass http://backend;
      proxy_set_header Host $http_host;
      proxy_redirect false;
    }
  }

  server{
    listen 443;
    server_name www.my-server.net;
    location / {
      proxy_pass https://secure;
      proxy_set_header Host $http_host;
      proxy_redirect false;
    }
  }
}
    
por tomazy 19.09.2009 / 02:57

1 resposta

1

Não use o nginx como balanceador de carga; não é projetado para esse tipo de coisa. Especificamente, no seu caso, ele não suporta a passagem transparente de conexões TCP para um backend, então você precisará ter sua configuração de certificados SSL em nginx e passar de volta para o Apache como HTTP regular.

Você quer um verdadeiro balanceador de carga L3 como o LVS, ou então um proxy TCP como o haproxy, que permitirá que as conexões SSL fluam diretamente para o Apache.

    
por 19.09.2009 / 11:13