Estou executando um aplicativo Sinatra por trás do passageiro / nginx. Estou tentando fazer com que ele responda às chamadas http e https. O problema é que, quando ambos são definidos no bloco do servidor, as chamadas https são respondidas normalmente, mas o http produz um erro 400 "A solicitação HTTP simples foi enviada para a porta HTTPS". Isso é para uma página estática, então estou supondo que Sinatra não tem nada a ver com isso. Alguma ideia de como consertar isso?
Este é o bloco do 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;
diz ao NGINX para servir QUALQUER conteúdo por meio de SSL. Use a sinalização "ssl" no final do seu, listen 443;
por exemplo, listen 443 ssl;
se o seu servidor entregar tráfego http e https, e remova a ssl on;
diretiva.
my.example.com:443
não funcionou. Mudar isso em vez dehttps://my.example.com
funcionar. Estranho, nunca tive esse problema com o apache.