NginX eliminando dados da sessão ao agir como um proxy reverso SSL para um aplicativo sinatra

2

Estou bastante preso neste momento. Eu tenho um site, servido em Mizuno (uma variante do Jetty, eu acho) usando Padrino (uma variante sinatra), na porta 8080, com Nginx ouvindo em 80/443 para permitir o proxy SSL para ele.

O site tem um mural de login, no qual um usuário efetua login e é desafiado antes de ter permissão de acessar o site. Sempre que eu acessar através da porta 8080 diretamente, tudo funciona como esperado, no entanto, quando eu passar por Nginx, só posso chegar à página de desafio. Ele me leva de volta à página de login sempre que tento postar minha resposta ao desafio.

EDIT: Além disso, quando eu me logar, o aplicativo de fato faz o login corretamente. Se eu tentar acessar a próxima página diretamente pela porta 8080, depois de ser expulso via nginx, ele permite o acesso.

Minha configuração do nginx é como abaixo

server {
    listen 443;
    server_name secure.website.io;
    ssl_certificate ssl-bundle.crt;
    ssl_certificate_key website.key;
    ssl on;
    ssl_session_timeout 5m;
    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;
    ssl_prefer_server_ciphers on;
    location / {
            proxy_redirect  off;
            proxy_set_header Host $http_host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-NginX-Proxy  true;
            client_max_body_size   10m;
            client_body_buffer_size        128k;
            proxy_connect_timeout  90;
            proxy_send_timeout     90;
            proxy_read_timeout     90;
            proxy_buffer_size      4k;
            proxy_buffers  4 32k;
            proxy_busy_buffers_size        64k;
            proxy_temp_file_write_size     64k;
            proxy_pass      http://127.0.0.1:8080;
    }
}
server {
    listen  80;
    server_name     secure.website.io;
    rewrite ^       https://$server_name$request_uri? permanent;
}

Estou sentindo falta de algo aqui?

    
por rp.kelly 26.03.2015 / 12:42

1 resposta

0

Eu encontrei uma solução para isso. Ao trocar o Mizuno pelo Phusion Passenger, eu pude remover o nginx da mistura completamente, e servir o certificado SSL usando as opções de configuração do Passenger.

    
por 30.03.2015 / 16:07