Nginx HTTP और HTTPS दोनों को एक ही serverब्लॉक में प्रोसेस करने की अनुमति देता है । इस प्रकार आपको दोनों के लिए निर्देशों की नकल नहीं करनी है और आप जिस मार्ग को सुरक्षित करना चाहते हैं उसे पुनर्निर्देशित कर सकते हैं
server {
listen 80 default_server;
listen 443 ssl;
... ssl certificate and other configs ...
location /user {
if ($scheme = 'http') {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
... your basic configuration ...
}
सुनिश्चित करें नहीं डाल करने के लिए ssl onवहाँ लाइन क्योंकि यह सादा HTTP निकाल लेंगे।
वैकल्पिक रूप से, आप HTTPS से अन्य सभी अनुरोधों को उसी तरह HTTP पर वापस भेज सकते हैं:
if ($scheme = 'https') {
rewrite ^ http://$http_host$request_uri? permanent;
}
अद्यतन : जैसा कि अलेक्सई टेन कृपया टिप्पणी अनुभाग में बताते हैं, schemeप्रत्येक अनुरोध पर जाँच करना बहुत उज्ज्वल विचार नहीं है। आपको अपने nginx को कॉन्फ़िगर करने के घोषित तरीके का पालन करना चाहिए। इस स्थिति में, दो सर्वर ब्लॉकों को पुनर्निर्देशित करके घोषित करें location, सामान्य तर्क को एक अलग फ़ाइल में ले जाएं और includeइसे दोनों में। तो GruffTech का जवाब बेहतर है।