सभी अनुरोधों को HTTPS पर पुनर्निर्देशित करें, एक उपनिर्देशिका को छोड़कर


13

मैं अपने हस्ताक्षरित प्रमाणपत्रों से ले जाने की कोशिश कर रहा हूं कि चलो मेरे nginx वेबसर्वर पर प्रमाण पत्र एन्क्रिप्ट करें।

वर्तमान में, मैं करने के लिए सभी अनुरोधों को अनुप्रेषित http/80करने के लिए https/443है, जो एक आत्म हस्ताक्षरित प्रमाणपत्र मैंने कुछ समय पहले बनाया का उपयोग करता है।

अब - जो मैं समझता हूं कि चलो एनक्रिप्ट को 80 को पोर्ट करने का अनुरोध करता है (जैसा कि मैं webrootविकल्प का उपयोग कर रहा हूं certbot)। इन अनुरोधों को पुनर्निर्देशित किया जाता है, जो प्रमाणपत्र पीढ़ी को असफल बना देता है।

मैंने निम्नलिखित सर्वर ब्लॉक के साथ इसे प्राप्त करने की कोशिश की, पोर्ट 80 पर सुनकर:

server {
        listen  80;     
        server_name     sub.domain.tld;
        server_tokens   off;


        location /.well-known {
                root /var/www/letsencrypt;
        }

        location / {
                return 301 https://$host$request_uri;
        }
}

लेकिन अनुरोधों /.well-knownको https/443वैसे भी पुनर्निर्देशित किया जाता है ।

मैं अनुरोधों http/80को https/443छोड़कर, सभी अनुरोधों को कैसे पुनर्निर्देशित कर सकता हूं /.well-known/?


1
जहां तक मुझे पता है हूँ, webrootके certbotविकल्प सादा http की आवश्यकता है।
सैटॉमिक

2
आपने रीडायरेक्ट कैसे किया? मुझे लगता है कि आपका ब्राउज़र आपके डोमेन के लिए HSTS हेडर का सम्मान करता है, लेकिन चलो एन्क्रिप्ट बॉट इसे अनदेखा करेंगे। wget/curl
एलेक्सी टेन

जवाबों:


17

इसे इस्तेमाल करे:

server {
    listen  80;     
    server_name     sub.domain.tld;
    server_tokens   off;

    root /var/www/letsencrypt;

    location /.well-known {
        try_files $uri $uri/ =404;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

चूंकि try_filesआपके वर्चुअल सर्वर में कोई प्रविष्टि नहीं थी, इसलिए यह नहीं पता था कि आने वाले अनुरोधों का क्या करना है /.well-known


2
locationबिना try_filesबस से फ़ाइल भेजता rootनिर्देशिका।
एलेक्सी टेन

1
अजीब, मेरे पास ठीक यही स्थिति है और मैं उपयोग नहीं try_filesकरता हूं और यह मेरे लिए पूरी तरह से ठीक काम करता है। वास्तव में मेरे पास ठीक वैसा ही विन्यास है जैसा प्रश्न में कहा गया है। location /.well-known/इसके बजाय केवल अंतर है location /.well-known(ध्यान दें कि अनुगामी स्लेश)। तो शायद यह समस्या कहां है?
ओलले केल्डरमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.