สภาพแวดล้อมของฉันมีคำขอของผู้ใช้ที่ส่งผ่านระบบจำนวนมาก:
[ลูกค้า] -> [ELB] ---> [nginx] -> [เว็บ]
(ELB = AWS ตัวโหลดบาลานซ์แบบยืดหยุ่น)
ขอบคุณคำตอบนี้ฉันมี nginx ที่กำหนดและส่งต่อที่อยู่ IP ของไคลเอ็นต์ที่ถูกต้องไปยังเซิร์ฟเวอร์ upstream (เว็บ) ด้วย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;
ปัญหาของฉันคือสิ่งนี้โมดูล Real IP ใน nginx จะแทนที่$remote_addrตัวแปรที่มีอยู่ด้วยผลลัพธ์ของการX-Forwarded-Forคำนวณ สิ่งนี้ทำให้ IP ไคลเอนต์ต้นทางของฉัน แต่ฉันสูญเสียที่อยู่ IP ของระบบที่ส่งคำขอไปยังพรอกซี (เช่น ELB)
โดยรวมแล้วการมี IP ของลูกค้าสำคัญกว่าสำหรับฉัน แต่ฉันต้องการบันทึกการร้องขอทั้งหมดเพื่อให้ฉันสามารถเข้าใจ (และดีบัก) ปริมาณการใช้ข้อมูลที่ไหล ขณะนี้ฉันสามารถมีได้เฉพาะ nginx บันทึก IP ไคลเอ็นต์ IP ของตนเองและ IP เซิร์ฟเวอร์ upstream ฉันต้องการบันทึก ELB IP ด้วยเช่นกัน
ฉันเห็นX-Istenceถามคำถามเดียวกันในปี 2013 ด้วยโชคเล็กน้อย ตั้งแต่นั้นมามีการเปลี่ยนแปลงหรือปรับปรุงอะไรบ้าง?
$realip_remote_addrผมก็กลับมาที่จะตอบคำถามของฉันเองเพราะหลังจากที่ใฝ่หากลยุทธ์อื่นในที่สุดผมก็สะดุด มันใช้งานได้อย่างสวยงาม เป็นจริงพยายามที่จะได้รับ proxy_protocol ทำงานและมาเมื่อ nginx แก้ไขบันทึกสำหรับ 1.9.7