Saya menjalankan aplikasi Sinatra di belakang penumpang / nginx. Saya mencoba membuatnya merespons panggilan http dan https. Masalahnya adalah, ketika keduanya didefinisikan di blok server, panggilan https ditanggapi secara normal tetapi http menghasilkan kesalahan 400 "Permintaan HTTP biasa telah dikirim ke port HTTPS". Ini untuk halaman statis jadi saya kira Sinatra tidak ada hubungannya dengan ini. Ada ide tentang cara memperbaikinya?
Berikut blok servernya:
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;
memberi tahu NGINX ke server SETIAP konten melalui SSL. Gunakan tanda "ssl" di akhir listen 443;
mis. listen 443 ssl;
Jika server Anda memberikan lalu lintas http dan https, dan hapus ssl on;
perintah.
my.example.com:443
tidak berfungsi. Mengubah itu malahhttps://my.example.com
berhasil. Aneh, tidak pernah mengalami masalah ini dengan apache.