गैर-मानक पोर्ट पर nginx SSL कैसे चलाएं


16

मुझे लगता है कि यह कम से कम कुछ अन्य प्रश्नों के डुप्लिकेट की तरह दिखता है, लेकिन मैंने उन्हें कई बार पढ़ा है और अभी भी कुछ गलत कर रहा हूं।

निम्नलिखित my myampleample.com nginx config फ़ाइल में स्थित हैं /etc/nginx/sites-available

server {

  listen       443 ssl;
  listen       [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
      index index.html index.htm;

}

यह काम करता है, जब मैं https://myexample.com पर जाता हूं तो सामग्री परोसी जाती है और कनेक्शन सुरक्षित रहता है। अतः यह विन्यास अच्छा प्रतीत होता है।

अब अगर मैं ssl पोर्ट को 9443 में बदल देता हूं और nginx config को फिर से लोड करता हूं, तो कॉन्फिडेंस बिना किसी त्रुटि के रीलोड हो जाता है, लेकिन https://myexample.com पर जाकर ब्राउजर में एक एरर दिखाई देता है (इस साइट तक नहीं पहुंचा जा सकता / myexample.com ने मना कर दिया कनेक्ट करें। ERR_CONNECTION_REFUSED)

मैंने यहाँ , यहाँ , और यहाँ (अन्य लोगों के बीच) सुझाव और प्रलेखन की कोशिश की है , लेकिन मुझे हमेशा ERR_CONNECTION_REFUSED त्रुटि मिलती है।

मुझे ध्यान देना चाहिए कि मैं एक गैर-मानक पोर्ट का उपयोग कर सकता हूं और फिर स्पष्ट रूप से उस पोर्ट को URL में टाइप कर सकता हूं, उदाहरण के लिए, https://myexample.com:9443 । लेकिन मैं ऐसा नहीं करना चाहता। मैं जो चाहता हूं, वह यह है कि उपयोगकर्ता किसी भी ब्राउज़र में myexample.com टाइप करने में सक्षम हो और अपने आप ही निनेक्स को सुरक्षित कनेक्शन पर रीडायरेक्ट कर दे।

दोबारा, मेरे पास कोई समस्या नहीं है जब भी मैं मानक 443 एसएसएल पोर्ट का उपयोग करता हूं।

संपादित करें: मैं डेबियन / जेसी पर nginx / 1.6.2 का उपयोग कर रहा हूं


1
आपने उल्लेख किया है कि "मुझे ध्यान देना चाहिए कि मैं एक गैर-मानक पोर्ट का उपयोग कर सकता हूं और फिर उस पोर्ट को URL में टाइप कर सकता हूं, जैसे, myexample.com:9443 ।" क्या आप यह बता सकते हैं कि आप ऐसा कैसे कर पा रहे थे क्योंकि मैं SSL के साथ " myexample.com:9443 " जैसे smth का उपयोग करके अपनी वेबसाइट को एक्सेस करना चाहता हूं
Ghassan Zein

जवाबों:


23

अपने ब्राउज़र में " https://myexample.com " टाइपिंग का समर्थन करने के लिए , और इसे nginxपोर्ट 9443 पर सुनने वाले कॉन्फिगर द्वारा नियंत्रित किया जाता है , आपको अतिरिक्त nginxकॉन्फ़िगरेशन की आवश्यकता होगी जो अभी भी पोर्ट 443 पर सुनता है, क्योंकि यह IP पोर्ट है जो ब्राउज़र कनेक्ट करता है

इस प्रकार:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  # Redirect the browser to our port 9443 config
  return 301 $scheme://myexample.com:9443$request_uri;
}

server {
  listen 9443 ssl;
  listen [::]:9443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
  index index.html index.htm;
}

ध्यान दें कि दोनों वर्गों के लिए समान प्रमाणपत्र / कुंजी की आवश्यकता है, क्योंकि प्रमाणपत्र आमतौर पर DNS होस्टनाम से बंधा होता है, लेकिन जरूरी नहीं कि पोर्ट।

उम्मीद है की यह मदद करेगा!


यह सबसे पूर्ण उत्तर है, लेकिन मुझे क्या लगता है कि आप मुझे बता रहे हैं कि स्वचालित रूप से एक सुरक्षित कनेक्शन पर पुनर्निर्देशित करने के लिए, nginx को अभी भी 443 पोर्ट के लिए बाध्य होना पड़ता है। क्या यह मामला है? यही समस्या है :-( मैं एक प्रक्रिया है कि बंदरगाह के लिए बाध्य किया है।
GojiraDeMonstah

Nginx एक रिवर्स प्रॉक्सी है। आप इसे 443 पर सुन सकते हैं और उपयुक्त आवेदन के लिए अनुरोध पारित कर सकते हैं।
टिम

टिम - तुम सही हो। मैंने शायद एक वास्तविक गूंगा सवाल पूछा था, लेकिन मैं उम्मीद कर रहा था कि एसएसएल पोर्ट को "जादुई रूप से" बदलने का एक तरीका था।
गोजिराडेमनस्टाह

@GojiraDeMonstah यदि आप पोर्ट 443 का उपयोग नहीं करना चाहते हैं, तो आप अपना चुना हुआ पोर्ट नंबर URL में डाल दें। बस इतना ही।
माइकल हैम्पटन

"एसएसएल" काफी महत्वपूर्ण था। मैंने पहले default_server किया था और काफी समय से इससे जूझ रहा था।
स्वेटेक

0

जब आप https://example.com टाइप करते हैं , तो https: // योजना का मानक 443 पोर्ट से जुड़ना है। आपके मामले में, आपने अपना सर्वर स्थानांतरित कर दिया है ताकि यह अब पोर्ट 9443 पर सुने। आपको कनेक्शन से इनकार कर दिया गया है। संदेश इस वजह से - पोर्ट 443 पर कुछ भी नहीं सुन रहा है।

आपको पोर्ट 443 पर कुछ सुनने की व्यवस्था करने की आवश्यकता होगी जो 9443 पोर्ट के कनेक्शन को रीडायरेक्ट करता है या URL के हिस्से के रूप में एक पोर्ट का उपयोग करता है।


-1

यदि आप पोर्ट को एक गैर मानक 9443 की तरह बदलते हैं, तो आपको 443 से 9443 पर पुनर्निर्देशन जोड़ने की आवश्यकता है। उस पोर्ट पर प्रॉक्सी को रिवर्स करने के लिए nginx सेट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.