Redirecionar todo o tráfego HTTP para HTTPS ao usar o balanceador de carga HTTP (S) no Google Compute Engine

15

Eu tenho o balanceamento de carga HTTP / HTTPS configurado no Google Compute Engine com duas regras de encaminhamento global (HTTP e HTTPS). Cada regra aponta para um serviço de backend com um protocolo de HTTP.

Eu quero que todas as solicitações para http://* sejam direcionadas para https://* .

Como o balanceador de carga fala com os serviços de back-end por HTTP, não creio que possa obter o nginx no serviço de back-end para enviar de volta um 301 .

Eu tentei uma dúzia de pequenos ajustes no google compute e todos acabaram com o google compute retornando um 502 .

Tenho certeza de que alguém já configurou isso antes. Quaisquer dicas ou ponteiros na direção correta são muito apreciadas.

    
por Ryan Leckey 02.11.2015 / 01:29

2 respostas

19

Temos uma configuração semelhante usando o balanceador de carga HTTP / HTTPS e conseguimos forçar o HTTPS. Não é possível diretamente do balanceador de carga, mas você pode configurá-lo a partir do seu serviço de back-end. O balanceador de carga do Google Cloud definirá o cabeçalho http do X-Forwarded-Proto com o valor http ou https. Você verifica este cabeçalho em seu serviço de back-end (no nosso caso, Varnish, mas isso também pode ser feito no Nginx) e se o valor for http, você envia de volta um 301.

    
por 10.11.2015 / 13:10
1

Eu enfrentei esse problema hoje e consegui resolvê-lo usando o balanceamento de carga TCP. Se você não precisar das opções específicas do balanceador de carga HTTP / HTTPS, talvez possa usar o balanceador de carga TCP (sem SSL) para receber tráfego para as portas 80 e 443. Para tráfego da porta 80, você pode enviar 301.

    
por 18.07.2016 / 18:18