HTTP_X_FORWARDED_PROTO हेडर के लिए nginx को आगे कैसे करें?


18

मैं अपने सेटअप का पीछा कर रहा हूं

nginx > apache/php

सेवा

haproxy > nginx > apache/php

(ssl समर्थन संकलित के साथ haproxy 1.5-dev18 का उपयोग करके)

HTTP_X_FORWARDED_PROTO हेडर को सेट करने के लिए nginx और haproxy दोनों को सही ढंग से सेटअप किया गया है। हालाँकि, जब nginx को hproxy से ssl ट्रैफ़िक मिलता है, तो यह कनेक्शन को http के रूप में देखता है और हेडर को सेट करता है।

अगर यह मौजूद है, तो मैं HTTP_X_FORWARDED_PROTO हेडर को कैसे सेट कर सकता हूं, लेकिन कनेक्शन के आधार पर इसे सेट करना जारी रख सकता हूं?

जवाबों:


36

मुझे लगा कि इसे कैसे हल किया जाए। समस्या यह थी कि nginx मेरे विन्यास की इस लाइन पर haproxy द्वारा निर्धारित हेडर को ओवरराइट कर रहा था:

proxy_set_header X-Forwarded-Proto $scheme;

मैंने इसे इसमें जोड़कर तय किया:

map $http_x_forwarded_proto $thescheme {
     default $scheme;
     https https;
 }   

और नई योजना का उपयोग करने के लिए प्रॉक्सी_सेट_हीडर लाइन को बदलना:

proxy_set_header X-Forwarded-Proto $thescheme;

जब तक मैं कुछ याद कर रहा हूँ, आपके पहले और बाद की proxy_set_headerलाइनें समान हैं।
विल्फ्रेड ह्यूजेस

1
$schemeबनाम $thescheme
Arlen Beiler

क्या यह कुछ दुर्लभ मामलों में असुरक्षित नहीं है? यदि कोई वेब ब्राउजर एक HTTP अनुरोध haproxy को भेजता है, और haproxy तो Nginx को HTTPS अनुरोध भेजता है - तो default $schemeमामला होगा, $theschemeHTTPS पर सेटिंग हालांकि वास्तव में अनुरोध (haproxy) असुरक्षित असुरक्षित है। - इससे बचने के लिए, इसके बारे में क्या: default $http_x_forwarded_proto; '' $scheme;इसलिए, अगर haproxy HTTP कहे तो इसका सम्मान किया जाएगा।
काजागमनस

इसका सुझाव यहां दिया गया है: stackoverflow.com/a/21911864/694469 (यानी default $http_x_forwarded_proto;)।
काजागमनस

2

मुझे AWS ELB के साथ समान आवश्यकता थी

यहाँ मेरी हल करने की रेखा है:

proxy_set_header        X-Forwarded-Proto $http_x_forwarded_proto;

क्या मुझे $http_x_forwarded_protoकहीं सेटिंग करनी चाहिए ? वो क्या है?
जोनाथन

developer.mozilla.org/en-US/docs/Web/HTTP/Headers/… $ http_x_forwarded_proto NGINX कार्यान्वयन है
जॉब

2
तुम जवाब मैं सिर्फ 3 दिनों के लिए पर हथौड़ा मार रहा है एक मुद्दा हल! proxy_set_header X-Forwarded-Proto $scheme;
अर्स

1

मैं सिर्फ टिप्पणी नहीं कर सकता, इसलिए मैं इसे एक उत्तर के रूप में पोस्ट करता हूं: क्या आप हमें या अपने सभी नगनेक्स कॉन्फ़िगरेशन को दे सकते हैं ताकि हम देख सकें कि इसमें क्या गलत है? संभवतः आपका HAProxy config भी है?

पहली समस्या मैं सोच सकता हूं कि आपका HAProxy ssl समाप्ति कर रहा है। इसे वापस लेने के लिए, अपने बैकेंड सर्वर को ऑफलोड करने के लिए, एक लोड बैलेंसर को सभी ssl काम करने के लिए कॉन्फ़िगर किया जा सकता है, और फिर HTTP में अपने बैकेंड सर्वर के साथ संवाद कर सकते हैं। यहाँ इस योजना की तरह: http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/

अपने प्रश्न का अच्छा उत्तर देने के लिए, क्या आप जाँच सकते हैं कि आपके http <> https कॉन्फ़िग में कोई लूपबैक समस्या नहीं है? हो सकता है कि तब आप http, http, https से https तक रीडायरेक्ट कर सकें, और फिर http को https पर पुनर्निर्देशित करने के लिए मजबूर कर सकें।

क्या आप यह भी जाँच सकते हैं कि आपने ssl passthrough को अपने HAProxy config में सक्षम किया है?


क्या आपने अपनी समस्या का समाधान किया?
यानोविक

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