Nginx को अपस्ट्रीम SSL के साथ रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करें


40

मैं एक Nginx सर्वर को एक रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करने का प्रयास करता हूं, इसलिए क्लाइंट से प्राप्त होने वाले https अनुरोधों को अपस्ट्रीम सर्वर पर भी https के माध्यम से अग्रेषित किया जाता है।

यहाँ विन्यास है जो मैं उपयोग करता हूं:

http {

    # enable reverse proxy
    proxy_redirect              off;
    proxy_set_header            Host            $http_host;
    proxy_set_header            X-Real-IP       $remote_addr;
    proxy_set_header            X-Forwared-For  $proxy_add_x_forwarded_for;

    upstream streaming_example_com 
    {
          server WEBSERVER_IP:443; 
    }

    server 
    {
        listen      443 default ssl;
        server_name streaming.example.com;
        access_log  /tmp/nginx_reverse_access.log;
        error_log   /tmp/nginx_reverse_error.log;
        root        /usr/local/nginx/html;
        index       index.html;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_certificate /etc/nginx/ssl/example.com.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com.key;
        ssl_verify_client off;
        ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers RC4:HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;


        location /
        {
            proxy_pass  https://streaming_example_com;
        }
    }
}

वैसे भी, जब मैं रिवर्स प्रॉक्सी का उपयोग करके किसी फ़ाइल को एक्सेस करने का प्रयास करता हूं तो यह वह त्रुटि है जो मुझे रिवर्स प्रॉक्सी लॉग में मिलती है:

2014/03/20 12:09:07 [त्रुटि] 4113079 # 0: * 1 SSL_do_handshake () विफल (SSL: त्रुटि: 1408E0F4: SSL रूटीन: SSL3_GET_MESSAGE: अप्रत्याशित संदेश, जबकि SSL अपस्ट्रीम करने के लिए ग्राहक, 192.168.1.2) सर्वर: Stream.example.com, अनुरोध: "GET /publishers/0/645/_teaser.jpg HTTP / 1.1", अपस्ट्रीम: " https://MYSERVER.COM:443/publishers/0/645_teaser.jpg " , होस्ट: "Stream.example.com"

कोई आइडिया है कि मैं क्या गलत कर रहा हूँ?


क्या आपने upstreamWEBSERVER_IP को सीधे प्रॉक्सी_पास निर्देश में डालकर मॉड्यूल का उपयोग किए बिना यह देखने की कोशिश की कि क्या आपको भी वही त्रुटि मिलती है?
बेनोइट

नहीं, मैंने यह कोशिश नहीं की, लेकिन जैसा कि विकल्प के नीचे बताया गया है, proxy_ssl_session_reuse off;यह उम्मीद के मुताबिक काम करता है।
एलेक्स फ्लो

10
कृपया समर्थित प्रोटोकॉल से SSLv3 को हटा दें। यह सुरक्षित नहीं है और आपको इसका उपयोग नहीं करना चाहिए: ssl_protocols SSLv3
user220703

जवाबों:


30

मैंने पाया कि क्या त्रुटि थी, मुझे जोड़ने की आवश्यकता है proxy_ssl_session_reuse off;


1
धन्यवाद। उन लोगों के लिए जो इस कॉन्फ़िगरेशन का उपयोग करने के बाद भी समस्या हो सकती है, प्रॉक्सी_पास में एक पैरामीटर के रूप में दिए गए URL की शुरुआत में सिर्फ http के बजाय https का उपयोग करना याद रखें। अन्यथा, nginx अपस्ट्रीम पर भेजे गए ट्रैफ़िक को एन्क्रिप्ट नहीं करेगा और आपको अभी भी वही त्रुटि संदेश मिलेगा।
लुसियो मोलिनेडो

1

मेरे मामले में, मैं क्लाउडफ्लेयर के पीछे एक वेबसाइट को प्रॉक्सी करने की कोशिश कर रहा था। मुझे वही त्रुटि मिली /var/log/nginx/error.log। मैंने कई समाधान आजमाए और इसने मेरे लिए काम किया:

proxy_ssl_server_name on;

हाँ, अब भी 2019 है, कुछ सेवाओं को अभी भी होस्ट की गई साइटों के बीच भेद करने के लिए SNI की आवश्यकता है।

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