मेरे वातावरण में कई प्रणालियों से गुजरने वाले उपयोगकर्ता अनुरोध हैं:
[ग्राहक] -> [ELB] ---> [nginx] -> [वेब]
(ELB = AWS इलास्टिक लोड बैलेंसर)
इस उत्तर के लिए धन्यवाद , मेरे पास X-Forwarded-For
और X-Real_IP
हेडर के साथ अपस्ट्रीम सर्वर (वेब) के लिए सही क्लाइंट आईपी एड्रेस को निर्धारित करने और पास करने की सुविधा है । प्रासंगिक nginx कॉन्फ़िगरेशन:
real_ip_header X-Forwarded-For;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
proxy_set_header X-Real-IP $remote_addr;
मेरी समस्या यह है, nginx में रियल आईपी मॉड्यूल अपने परिवर्तन के परिणाम के साथ मौजूदा चर को बदलता है । यह मुझे मूल क्लाइंट आईपी देता है, लेकिन मैं उस सिस्टम का आईपी पता खो रहा हूं जो वास्तव में प्रॉक्सी (यानी ईएलबी) को अनुरोध भेज रहा है।$remote_addr
X-Forwarded-For
कुल मिलाकर, क्लाइंट आईपी होना मेरे लिए अधिक महत्वपूर्ण है, लेकिन मैं अनुरोधों की पूरी श्रृंखला को लॉग इन करने में सक्षम होना चाहूंगा ताकि मैं समझ सकूं (और डिबग) कि ट्रैफिक कैसे बह रहा है। वर्तमान में, मैं केवल क्लाइंट IP, अपना स्वयं का IP और अपस्ट्रीम सर्वर IP लॉग कर सकता है। मैं ELB IP को भी लॉग इन करने में सक्षम होना चाहूंगा।
मैं देख रहा हूं कि X-Istence ने 2013 में एक ही सवाल पूछा था , कम भाग्य के साथ। तब से कुछ भी बदला या सुधरा है?
$realip_remote_addr
। यह खूबसूरती से काम करता है। वास्तव में काम करने के लिए proxy_protocol प्राप्त करने की कोशिश और के लिए 1.9.7 nginx पैच नोटों पर आया था