Sto eseguendo un'app Sinatra dietro passenger / nginx. Sto cercando di convincerlo a rispondere sia alle chiamate http che a quelle https. Il problema è che quando entrambi sono definiti nel blocco del server, le chiamate https vengono risposte normalmente ma http restituisce un errore 400 "La semplice richiesta HTTP è stata inviata alla porta HTTPS". Questa è per una pagina statica quindi immagino che Sinatra non abbia nulla a che fare con questo. Qualche idea su come risolvere questo problema?
Ecco il blocco del server:
server {
listen 80;
listen 443 ssl;
server_name localhost;
root /home/myhome/app/public;
passenger_enabled on;
ssl on;
ssl_certificate /opt/nginx/ssl_keys/ssl.crt;
ssl_certificate_key /opt/nginx/ssl_keys/ssl.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
location /static {
root /home/myhome/app/public;
index index.html index.htm index.php;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 /500.html;
access_log /home/myhome/app/logs/access.log;
error_log /home/myhome/app/logs/error.log;
}
ssl on;dice a NGINX di server QUALSIASI contenuto tramite SSL. Usa il flag "ssl" alla fine del tuo, listen 443;ad esempio, listen 443 ssl;se il tuo server fornisce sia traffico http che https e rimuovi la ssl on;direttiva.
my.example.com:443non funzionava. Cambiarlo invece inhttps://my.example.comfunzionato. Strano, non ho mai avuto questo problema con Apache.