O balanceador de carga Nginx está pendurado no SSL

2

Estou tentando fazer com que o nginx faça o balanceamento de carga em todos os meus servidores da Web, enquanto encerro o SSL no nível do balanceador de carga. O arquivo nginx.conf que estou usando é baseado em todos os guias para fazer exatamente isso, mas não consigo fazer funcionar. Ao ir para o HTTP padrão, o balanceador de carga funciona bem. No entanto, ao tentar acessar o balanceador de carga via HTTPS, o navegador simplesmente trava, eventualmente, fornecendo ERR_CONNECTION_REFUSED.

Não vejo erros nos logs nem nada nos logs de acesso ao tentar usar HTTPS, por isso não tenho ideia do problema. Eu tentei muitas opções de configuração diferentes, incluindo tentar certificados SSL diferentes, codificação PEM, agrupar certificados e assim por diante todos sem efeito.

Aqui está a parte principal do nginx.conf:

upstream backend {
    #web01
    server 10.01.01.102;
    #web02
    server 10.02.02.77;
}

#setup proxy
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# standard http server
server {
    listen 80;
    listen 4444;

    server_name *.example.com;

    location / {
        proxy_pass http://backend;
    }
}

#server for https requests
server {
    listen 443 ssl;

    server_name *.example.com;

    #ssl on;
    ssl_certificate /path/to/example.com.crt;
    ssl_certificate_key /path/to/example.com.key;

    location / {
        proxy_pass http://backend;
    }
}

Alguém tem alguma ideia? Sem saída de erro, não sei como descobrir qual é o problema.

EDITAR:

Ainda nada nos logs ao tentar se conectar ao HTTPS. Os logs são configurados e funcionam ao acessar o servidor HTTP (recebo entradas no log de acesso). Aqui está a parte relevante do arquivo nginx.conf para os logs:

access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;

Acabei de testar se o log de erros está funcionando corretamente e está. Eu fiz isso removendo a entrada 'ssl_certificate' do bloco do servidor no arquivo de configuração e tentei me conectar novamente. O log de erros ( /var/log/nginx/nginx.vhost.error.log; ) mostrou:

2014/09/23 13:41:28 [error] 10047#0: *9 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 127.0.0.1, server: 0.0.0.0:443 .

Coloquei a entrada ssl_certificate de volta, mas queria confirmar se os logs de erro estão funcionando. Eu também dei uma olhada em todos os logs em / var / log e não vi nenhum erro relacionado ao nginx.

    
por peacemaker 22.09.2014 / 23:30

1 resposta

4

Nos comentários, você verificou que o processo nginx estava em execução e telnet localhost 443 estava funcionando. Mas isso não significa que a parte externa possa alcançar seu nginx. Uma camada que você deve verificar é firewall . Ele irá inspecionar e descartar o pacote que flui para o nginx se você não permitir a regra para a porta 443.

Sidenote : erro Nginx 400 Bad request , geralmente significa que você faz telnet para nginx na porta https, mas sua solicitação não era clara ou incompleta (por exemplo, sem cabeçalhos HTTP definidos)

    
por 24.09.2014 / 05:41