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.
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?
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.
Tags ssl nginx reverse-proxy sinatra