मेरे पास एक nginx और विभिन्न उप डोमेन हैं:
a.mydomain.com
b.mydomain.com
c.mydomain.com
Nginx के 4 नियम हैं:
1) फिर से लिखना नियम:
server {
listen 80
server_name gl.udesk.org;
root /nowhere;
rewrite ^ https://a.mydomain.com$request_uri permanent;
}
2) https नियम:
server {
listen 443;
server_name a.mydomain.com;
root /home/a/a/public;
ssl on;
ssl_certificate conf.d/ssl/a.crt;
ssl_certificate_key conf.d/ssl/a.key;
ssl_protocols ...
ssl_ciphers ...
ssl_prefer_server_ciphers on;
location ...
}
3) http डिफ़ॉल्ट नियम:
server {
listen 80 default_server;
return 444;
}
4) https डिफ़ॉल्ट नियम:
server {
listen 443 default_server;
return 444;
}
तो अगर मैं nginx शुरू और:
- अगर मैं http://a.mydomain.com ब्राउज़र में जाऊं तो यह https://a.mydomain.com पर रीडायरेक्ट हो जाता है और फिर यह एक त्रुटि 107 (शुद्ध :: ERR_SSL_PROTOCOL_ERROR): SSL प्रोटोकॉल त्रुटि देता है।
- अगर मैं ब्राउज़र में https://b.mydomain.com पर जाता हूं तो मुझे उम्मीद है कि यह एरर 444 वापस कर देता है। लेकिन इसके बजाय यह वही त्रुटि 107 (शुद्ध :: ERR_SSL_PROTOCOL_ERROR) देता है: SSL प्रोटोकॉल त्रुटि।
- और इसलिए डीएनएस प्रदाता CNAMEs (अर्थात ए, बी, सी) द्वारा पंजीकृत सभी के लिए
- सभी http- संस्करण (जैसे नियम 3 -) अपेक्षित रूप से काम कर रहे हैं:
- http://a.mydomain.com https: // संस्करण पर रीडायरेक्ट करता है,
- http://b.mydomain.com और http://c.mydomain.com कॉन्फ़िगर के रूप में एक त्रुटि 444 वापस कर रहे हैं।
तो क्यों nginx में https नियम कॉन्फ़िगर करने के लिए बहुत मुश्किल हैं और मुझे http संस्करण के साथ समान व्यवहार प्राप्त करने के लिए उन्हें कैसे ठीक से कॉन्फ़िगर करना चाहिए?
अपडेट करें:
एक नया प्रमाणपत्र बनाना और जोड़ना:
ssl on;
ssl_certificate conf.d/ssl/default.crt;
ssl_certificate_key conf.d/ssl/default.key;
अब काम करता है, लेकिन मुझे बिना किसी एसएसएल प्रमाणपत्र के समाधान की आवश्यकता होगी। बिना प्रमाणपत्र प्रदान किए https://a.mydomain.com को छोड़कर सभी https (पोर्ट 443) सबडोमेन के लिए सभी कनेक्शन रीसेट करें ।
nginx
यह महसूस करने के लिए पर्याप्त स्मार्ट नहीं है कि उपयोगकर्ता को क्या करना है, इसके लिए उसे प्रमाणपत्र की आवश्यकता नहीं है।