Estoy ejecutando una aplicación Sinatra detrás de pasajeros / nginx. Estoy tratando de que responda a las llamadas http y https. El problema es que cuando ambos están definidos en el bloque del servidor, las llamadas https se responden normalmente, pero http produce un error de 400 "La solicitud HTTP simple se envió al puerto HTTPS". Esto es para una página estática, así que supongo que Sinatra no tiene nada que ver con esto. ¿Alguna idea sobre cómo solucionar este problema?
Aquí está el bloque del servidor:
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;
le dice a NGINX que sirva CUALQUIER contenido a través de SSL. Utilice el indicador "ssl" al final de su, listen 443;
por ejemplo, listen 443 ssl;
si su servidor entrega tráfico tanto http como https, y elimine la ssl on;
directiva.
my.example.com:443
no funcionó. Cambiar eso en cambio ahttps://my.example.com
funcionó. Extraño, nunca tuve este problema con apache.