Ich verwende eine Sinatra-App hinter Passenger / Nginx. Ich versuche, es dazu zu bringen, sowohl auf http- als auch auf https-Anrufe zu antworten. Das Problem ist, wenn beide im Serverblock definiert sind, werden https-Aufrufe normal beantwortet, aber http ergibt den Fehler 400 "Die einfache HTTP-Anforderung wurde an den HTTPS-Port gesendet". Dies ist für eine statische Seite, also hat Sinatra vermutlich nichts damit zu tun. Irgendwelche Ideen, wie man das behebt?
Hier ist der Serverblock:
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;
Weist NGINX an, JEDEN Inhalt über SSL zu bedienen . Verwenden Sie das "ssl" -Flag am Ende Ihres listen 443;
zB, listen 443 ssl;
wenn Ihr Server sowohl http- als auch https-Verkehr liefert, und entfernen Sie die ssl on;
Direktive.
my.example.com:443
nicht funktioniert hat. Ändern Sie das stattdessen, um zuhttps://my.example.com
funktionieren. Seltsam, hatte nie dieses Problem mit Apache.