J'exécute une application Sinatra derrière passager / nginx. J'essaie de le faire répondre aux appels http et https. Le problème est que lorsque les deux sont définis dans le bloc serveur, les appels https reçoivent normalement une réponse, mais http génère une erreur 400 "La requête HTTP simple a été envoyée au port HTTPS". Ceci est pour une page statique, donc je suppose que Sinatra n'a rien à voir avec cela. Des idées pour résoudre le problème?
Voici le bloc serveur:
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;
dit à NGINX de serveur TOUT contenu via SSL. Utilisez l'indicateur "ssl" à la fin de votre listen 443;
exemple listen 443 ssl;
si votre serveur délivre à la fois le trafic http et https, et supprimez la ssl on;
directive.
my.example.com:443
ne fonctionnait pas. Changer cela au lieu de cela ahttps://my.example.com
fonctionné. Bizarre, je n'ai jamais eu ce problème avec Apache.