ฉันใช้งานแอป Sinatra หลังผู้โดยสาร / nginx ฉันกำลังพยายามทำให้มันตอบสนองต่อการโทรทั้ง http และ https ปัญหาคือเมื่อกำหนดทั้งสองอย่างในการโทร https บล็อกเซิร์ฟเวอร์จะได้รับการตอบสนองตามปกติ แต่ http ให้ข้อผิดพลาด 400 "คำขอ HTTP ธรรมดาถูกส่งไปยังพอร์ต HTTPS" นี่คือหน้าคงที่ดังนั้นฉันเดาว่าซินาตร้าไม่เกี่ยวข้องกับสิ่งนี้ มีแนวคิดในการแก้ไขปัญหานี้อย่างไร
นี่คือบล็อกเซิร์ฟเวอร์:
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 ไปยังเซิร์ฟเวอร์เนื้อหาใด ๆผ่าน SSL ใช้แฟล็ก "ssl" ต่อท้ายlisten 443;
เช่นlisten 443 ssl;
หากเซิร์ฟเวอร์ของคุณส่งทั้งการรับส่งข้อมูล http และ https และลบssl on;
คำสั่ง
my.example.com:443
ไม่ทำงาน เปลี่ยนสิ่งนั้นแทนให้https://my.example.com
ได้ผล แปลกไม่เคยมีปัญหากับ apache นี้