Passenger / nginx'in arkasında bir Sinatra uygulaması çalıştırıyorum. Hem http hem de https çağrılarına yanıt vermesini sağlamaya çalışıyorum. Sorun, her ikisi de sunucu bloğunda tanımlandığında https çağrılarına normal şekilde yanıt verilir, ancak http, 400 "Düz HTTP isteği HTTPS bağlantı noktasına gönderildi" hatası verir. Bu statik bir sayfa için, bu yüzden Sinatra'nın bununla hiçbir ilgisi olmadığını tahmin ediyorum. Bunu nasıl düzelteceğine dair bir fikrin var mı?
İşte sunucu bloğu:
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;
NGINX'e, SSL yoluyla HERHANGİ bir içeriği sunucuya bildirir . listen 443;
Örneğin listen 443 ssl;
sunucunuz hem http hem de https trafiği sağlıyorsa ve ssl on;
yönergeyi kaldırıyorsa , sonunda "ssl" bayrağını kullanın .
my.example.com:443
işe yaramadı. Bunun yerinehttps://my.example.com
işe yarayacak şekilde değiştirmek . Garip, apache ile hiç böyle bir problem yaşamadım.