Tôi đang chạy một ứng dụng Sinatra sau hành khách / nginx. Tôi đang cố gắng để nó phản hồi cả cuộc gọi http và https. Vấn đề là, khi cả hai được xác định trong khối máy chủ, các cuộc gọi https được phản hồi bình thường nhưng http dẫn đến lỗi 400 "Yêu cầu HTTP thuần túy đã được gửi đến cổng HTTPS". Đây là một trang tĩnh nên tôi đoán Sinatra không liên quan gì đến điều này. có ý tưởng nào để sửa cái này không?
Đây là khối máy chủ:
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;
cho NGINX biết máy chủ BẤT KỲ nội dung nào thông qua SSL. Sử dụng cờ "ssl" ở cuối listen 443;
ví dụ listen 443 ssl;
của bạn nếu máy chủ của bạn phân phối cả lưu lượng truy cập http và https và xóa ssl on;
chỉ thị.
my.example.com:443
không hoạt động. Thay vào đó thay vào đó đểhttps://my.example.com
làm việc. Kỳ lạ, chưa bao giờ có vấn đề này với apache.