Score:0

วิธีเข้าถึงส่วนหัว X-Forwarded-For บน HAProxy หลัง AWS Loadbalancer

ธง tl

ในอินสแตนซ์ HAProxy ที่ทำงานบน K8S ฉันต้องบล็อกที่อยู่ IP บางอย่างด้วยตนเองบน HAProxy ขณะนี้ฉันไม่สามารถบันทึกได้ ตามเอกสาร AWS ตัวโหลดบาลานเซอร์ตั้งค่า X-ส่งต่อ-สำหรับ ส่วนหัวของคำขอและกรอกที่อยู่ IP ของลูกค้า

เมื่อพยายามบันทึกส่วนหัวนี้ (และด้วยเหตุนี้จึงเป็น IP ของไคลเอ็นต์) ฉันมักจะได้รับสตริงว่างด้วย HAProxy เวอร์ชัน 2.0.18 และ 2.2.20 ฉันเดาว่าฉันกำหนดค่า HAProxy ผิด การกำหนดค่าของฉันดูเหมือนว่า:

ทั่วโลก
    ภูต
    แม็กซ์คอน 256
    บันทึกรูปแบบ stdout ดิบ local0

ค่าเริ่มต้น
    โหมด http

    ตัวเลือก httplog
    ตัวเลือก dontlognull

    หมดเวลาเชื่อมต่อ 15,000 มิลลิวินาที
    ไคลเอ็นต์หมดเวลา 150000ms
    หมดเวลาเซิร์ฟเวอร์ 150000ms

รายชื่อผู้ใช้ global_auth
    ผู้ใช้ Someuser รหัสผ่านที่ไม่ปลอดภัย Somepass

http-in ส่วนหน้า
    ผูก *:80
    ผูก *:443 ssl crt /etc/certs/myapp-de.pem/cert_bundle_key.pem alpn h2,http/1.1

    ตัวเลือก httplog
    ตัวเลือก dontlognull

    ส่วนหัวคำขอจับภาพ X-Forwarded-For len 500
    จับภาพส่วนหัวคำขอ x-forwarded-for len 500

    รูปแบบบันทึก "ส่วนหัว = --%hr--, --%hrl-- | ส่วนหัว2: --%[capture.req.hdr(0)]--, --%[capture.req.hdr(1) ]--"
    เข้าสู่ระบบทั่วโลก

    acl host_ssl_exception hdr(โฮสต์) -i job.myapp.com

    รูปแบบการเปลี่ยนเส้นทาง https รหัส 301 ถ้า !{ ssl_fc } !host_ssl_exception

    acl is_post เมธอด POST|OPTIONS
    acl is_get เมธอด GET

    default_backend myapp-เว็บ

แบ็กเอนด์ myapp-web
    โหมด http
    การบีบอัดด้วย gzip
    ประเภทการบีบอัดข้อความ/ข้อความ html/ข้อความล้วน/แอปพลิเคชัน css/แอปพลิเคชันจาวาสคริปต์/json
    เซิร์ฟเวอร์ web1 myapp-web.myapp-${TRACK}.svc.cluster.local:80 maxconn 32 ตรวจสอบคุกกี้

ลบแบ็กเอนด์ทั้งหมดยกเว้นหนึ่งรายการ เปิดใช้งาน HTTPS และ HTTP2 เดอะ การจับกุม ดูเหมือนจะล้มเหลว แต่ตอนนี้ฉันไม่เข้าใจว่าทำไม

Score:-1
ธง kr

เพิ่ม ส่งพร็อกซี ของคุณ เซิร์ฟเวอร์ บรรทัดการกำหนดค่าใน แบ็กเอนด์ myapp-web config เพื่อรับ IP ที่ถูกต้องของลูกค้า

tl flag
ขอบคุณสำหรับคำแนะนำของคุณ แก้ไขฉัน ฉันเดาว่า 'send-proxy' ส่งส่วนหัวที่เกี่ยวข้องกับพร็อกซีไปยังแบ็กเอนด์ แต่นั่นไม่ใช่สิ่งที่ฉันต้องการเพื่อให้บรรลุ ฉันต้องบล็อกที่อยู่ IP บางอย่างที่อยู่ใน HAProxy แล้ว และ HAProxy ได้รับคำขอจากการตั้งค่า AWS Loadbalancer และ AWS LBs ได้ตั้งค่าส่วนหัว 'X-Forwarded-For' ซึ่งฉันต้องการใช้เพื่อบล็อกที่อยู่ IP บางอย่างก่อนที่คำขอจะมาถึงแบ็กเอนด์ของฉัน
Orphans avatar
cn flag
http-request set-header X-Forwarder-สำหรับ %[src]
Orphans avatar
cn flag
สิ่งนี้ควรใช้งานได้อย่างน้อยใน 2.2.9
tl flag
@Orphans: สิ่งนี้ส่งต่อส่วนหัว 'X-Forwarded-For' ไปยังแบ็กเอนด์ของฉัน ซึ่งไม่ใช่สิ่งที่ฉันต้องการบรรลุ ปัญหาคือ HAProxy ซึ่งเป็นเครื่องแรกในบรรทัดหลังจากตัวโหลดบาลานเซอร์ AWS แบบคลาสสิกไม่สามารถแม้แต่จับภาพ/บันทึกส่วนหัว 'X-Forwarded-For' ซึ่งควรตั้งค่าใน ELB ฉันต้องการกรองการรับส่งข้อมูลบน HAProxyy อยู่แล้ว ดังนั้นมันจึงไม่โดนแบ็คเอนด์ของฉันด้วยซ้ำ และฉันไม่เข้าใจว่าทำไมฉันไม่เห็นส่วนหัวนั้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา