Após configurar o balanceador Elastic Load, meu https não funciona mais. Erro Nginx

4

Eu tenho uma instância regular que funciona bem quando não está atrás de um balanceador de carga. Eu configurei um ELB com 80 forwarding para 80 e 443 forwarding para 443 e sticky sessions. Depois disso, recebo este erro quando vou para qualquer página https.

The plain HTTP request was sent to HTTPS port

Eu cuido do processo de forçar o https em certas páginas na minha configuração nginx. O que preciso fazer para que isso funcione? Eu estou colocando em uma versão barebones da minha configuração nginx abaixo.

http {

  include               mime.types;
  default_type          application/octet-stream;

  # Directories
  client_body_temp_path tmp/client_body/  2 2;
  fastcgi_temp_path     tmp/fastcgi/;
  proxy_temp_path       tmp/proxy/;
  uwsgi_temp_path       tmp/uwsgi/;

  server {
    listen              443;
    ssl                 on;
    ssl_certificate     ssl.crt;
    ssl_certificate_key ssl.key;

    server_name www.shirtsby.me;
    if ($host ~* ^www\.(.*)) {
        set $host_without_www $1;
        rewrite ^/(.*) $scheme://$host_without_www/$1 permanent;
    }

    location ~ ^/(images|img|thumbs|js|css)/  {
          root /app/public;
    }
    if ($uri ~ ^/(images|img|thumbs|js|css)/) {
        set $ssltoggle 1;
    }
    if ($uri ~ "/nonsecure") {
        set $ssltoggle 1;
    }
    if ($ssltoggle != 1) {
        rewrite ^(.*)$ http://$server_name$1 permanent;
    }

    location / {
      uwsgi_pass  unix:/site/sock/uwsgi.sock;
      include     uwsgi_params;
    }

  }

  server {
    listen      80;
    server_name www.shirtsby.me;
    if ($host ~* ^www\.(.*)) {
        set $host_without_www $1;
        rewrite ^/(.*) $scheme://$host_without_www/$1 permanent;
    }

    if ($uri ~ "/secure") {
        set $ssltoggle 1;
    }
    if ($ssltoggle = 1) {
        rewrite ^(.*)$ https://$server_name$1 permanent;
    }

    location ~ ^/(images|img|thumbs|js|css)/  {
          root /app/public;
    }

    location / {
      uwsgi_pass  unix:/home/ubuntu/site/sock/uwsgi.sock;
      include     uwsgi_params;
    }
  }
}
    
por jchysk 13.03.2012 / 07:20

2 respostas

3

Acabou recebendo a resposta do vandemar no nginx IRC Channel. Parece bem simples, mas lutei para descobrir. O ELB estava manipulando o SSL, eu já tinha dado todas as informações do certificado. O problema estava tentando resolvê-lo novamente nas instâncias individuais ou no arquivo de configuração. A solução é apenas eliminar todo o material SSL do arquivo de configuração. Então, remover essas três linhas consertou tudo:

ssl                 on;
ssl_certificate     ssl.crt;
ssl_certificate_key ssl.key;
    
por 20.03.2012 / 10:23
0

Eu tive o mesmo problema. Mas então percebi que meu ouvinte elb estava configurado incorretamente. Eu configurei o protocolo do balanceador de carga: https, load-balancer-port: 443, instance-port: 443, mas esqueci de alterar o protocolo de instância de http para https.

    
por 27.04.2016 / 16:25