मैं यात्री / 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;
SSL के माध्यम से किसी भी सामग्री को सर्वर पर NGINX बताता है । यदि आपका सर्वर http और https दोनों ट्रैफ़िक डिलीवर करता है, और निर्देश निकालता है, तो अपने listen 443;
उदाहरण के अंत में "ssl" ध्वज का उपयोग करें । listen 443 ssl;
ssl on;
my.example.com:443
काम नहीं किया। बदले किhttps://my.example.com
काम किया। अजीब, अपाचे के साथ यह समस्या कभी नहीं थी।