के पीछे nginx के पीछे रेल के लिए X-Forwarded-Proto मैं इस बात के साथ कुछ घंटों तक अटक गया हूं। कोई रास्ता नहीं मैं इसे काम कर सकता है। मैंने सब कुछ करने की कोशिश की जो मैं सोच सकता हूं और/या ऑनलाइन पाया।ईएलबी
तो, मेरा आवेदन ईएलबी (वेब) की ओर इशारा किया गया है। ईएलबी 80 और 443 सुनता है और 80 उदाहरण (एसएसएल को यहां समाप्त कर दिया जाता है) सदस्य उदाहरण (ओं) में भेजता है जो nginx है।
कई उदाहरणों के सामने Nginx प्रॉक्सी ऐप अनुरोध अन्य ईएलबी (ऐप) के लिए अनुरोध करता है। ये उदाहरण प्यूमा चलाते हैं।
https
योजना के साथ, जब मैं किसी URL पर जाने का प्रयास करता हूं (जहां मैंने उस नियंत्रक के लिए force_ssl
का उपयोग किया था) को छोड़कर सब कुछ ठीक काम करता है, मुझे रीडायरेक्शन लूप मिलता है। (जाहिर है app_name
ansible द्वारा प्रतिस्थापित हो जाता है।)
यहाँ मेरी nginx कॉन्फ़िगरेशन
location @{{app_name}} {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_pass http://{{app_name}};
# limit_req zone=one;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
की तरह लग रही है
$scheme
के बजाय
, मैं https
और $proxy_add_x_forwarded_proto
हार्डकोड करने की कोशिश की, लेकिन कोई भी मेरे लिए काम किया। मुझे अभी भी लूप मिलता है।
फिर मैंने रेल में env
का निरीक्षण करना शुरू किया और मुझे nginx config में सेट हेडर के बावजूद निम्न मान दिखाई देते हैं।
"SERVER_PROTOCOL"=>"HTTP/1.1",
"HTTP_X_FORWARDED_PROTO"=>"http",
"rack.url_scheme"=>"http",
मुझे यकीन नहीं है कि मैं क्या गलत कर रहा हूं। किसी भी मदद की सराहना की! नोट: मैंने पहले से ही सभी पाया एसओ धागे की जांच की है और कोई भी मदद नहीं की!
ठीक है, मेरे पास नई जानकारी है।यदि मैं ऐप ईएलबी के बजाय सीधे nginx से अनुरोधों को प्रॉक्सी करता हूं, तो मुझे लगता है कि सबकुछ पूरी तरह से काम कर रहा है ('" HTTP_X_FORWARDED_PROTO "=>" https ", रेल में)। तो, इसका मतलब है कि ईएलबी उस हेडर को अलग कर रहा है। क्या यह उस तथ्य से संबंधित हो सकता है कि ऐप ईएलबी 80 तक सुनता है और 8080 भेजता है और यही कारण है कि उस हेडर को अलग करना? – HungryCoder