Forçar redirecionamento SSL com AWS decriptografando SSL em um ELB e roteando para Nginx / Passenger

2

Atualmente, estamos criando um novo ambiente e estamos tendo algumas peculiaridades com o SSL. Estamos usando um ELB que aceita 80/443. Ambas as rotas para a mesma porta em uma caixa Nginx (ELB Decrypts). Na caixa Nginx, estamos verificando o cabeçalho da AWS e, se não o virmos, redirecionaremos para https. Até agora, embora o redirecionamento não esteja funcionando.

Abaixo está uma cópia do nosso arquivo de configuração nginx para o site que está escutando na porta 3000 (ELB 80- > 3000. ELB 443- > 3000).

server {
    listen 80;
    root /home/app/web-app/public;

    passenger_enabled on;
    passenger_user app;

    # If this is a Ruby app, specify a Ruby version:
    passenger_ruby /usr/bin/ruby2.2;
    passenger_min_instances 2;

    if ($http_x_forwarded_proto != "https") {
        return 301 https://$host$request_uri;
    }
}

Alguma opinião sobre o que estou fazendo errado aqui?

EDITAR

Estamos usando a imagem da janela de encaixe do passageiro como vista aqui - link

O Passenger inicia e parece receber todas as solicitações na porta 3000, apesar do que a configuração do Nginx mostra de listen 80.

    
por CogitoErgoSum 16.02.2016 / 22:04

2 respostas

1

@TJSaunders me colocou no caminho certo. Eu estava correndo passageiro sozinho via bundle exec que estava ignorando Nginx. Depois que percebi esse erro e mudei o meu arquivo de janela de encaixe para iniciar o Nginx, ele começou a acessar os arquivos de configuração.

    
por 17.02.2016 / 17:23
0

Você pode precisar dizer ao passageiro para passar esses cabeçalhos, por exemplo, :

passenger_pass_header X-Forwarded-For;
passenger_pass_header X-Forwarded-Proto;

Os documentos passenger_pass_header mencionam que alguns cabeçalhos não são repassados e que esta diretiva é necessária.

Espero que isso ajude!

    
por 16.02.2016 / 23:24