ฉันมีเซิร์ฟเวอร์ nginx อยู่เบื้องหลังโหลดบาลานเซอร์ เซิร์ฟเวอร์ nginx ส่งคำขอไปยังบริการต่างๆ แต่ในกรณีนี้คือคอนเทนเนอร์นักเทียบท่าที่ใช้ apache ตัวจัดสรรภาระงานตั้งค่า X-Forwarded-For อย่างถูกต้อง แต่เมื่อถึงเวลาที่คอนเทนเนอร์นักเทียบท่า X-Forwarded-For จะถูกตั้งค่าเป็น LB IP
ฉันมีสิ่งนี้ในการกำหนดค่า nginx:
/etc/nginx/conf.d/real_ip.conf
set_real_ip_from {{ปอนด์ IP}};
real_ip_header X-Real-IP;
real_ip_recursive บน;
และนี่คือโฮสต์เสมือน:
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ฟัง [::]:443 ssl;
server_name *.domain โดเมน;
รวม /etc/nginx/snippets/domain_ssl.conf;
add_header X-Nginx-Debug "สวัสดี";
เปิด proxy_pass_request_headers;
ที่ตั้ง / {
เปิด proxy_pass_request_headers;
proxy_pass http://คอนเทนเนอร์-php;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัพเกรด";
proxy_set_header โฮสต์ $http_host;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-Addr $remote_addr;
proxy_set_header X-Real-IP $http_x_real_ip;
proxy_set_header X-Header-Test "Hello World - $http_x_forwarded_for";
proxy_set_header X-Forwarded-Proto $scheme;
}
}
แต่สิ่งที่ฉันได้รับจากคอนเทนเนอร์คือ:
อาร์เรย์ (19) {
["การเชื่อมต่อ"]=>
สตริง (7) "อัปเกรด"
["โฮสต์"]=>
สตริง (19) "โดเมน"
["X-ส่งต่อ-สำหรับ"]=>
สตริง (12) "{{LB IP}}"
["X-Header-Test"]=>
สตริง (13) "สวัสดีชาวโลก -"
["X-Forwarded-Proto"]=>
สตริง (5) "https"
["การควบคุมแคช"]=>
สตริง (9) "อายุสูงสุด = 0"
["sec-ch-ua"]=>
string(64) "" ไม่ใช่;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97""
["sec-ch-ua-mobile"]=>
สตริง (2) "?0"
["sec-ch-ua-platform"]=>
สตริง (9) "" Windows ""
["คำขออัปเกรดที่ไม่ปลอดภัย"]=>
สตริง(1) "1"
["ตัวแทนผู้ใช้"]=>
string(114) "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/97.0.4692.71 Safari/537.36"
["ยอมรับ"]=>
string(135) "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v =b3;q=0.9"
["sec-fetch-site"]=>
สตริง (4) "ไม่มี"
["โหมดดึงข้อมูลวินาที"]=>
สตริง (8) "นำทาง"
["sec-fetch-user"]=>
สตริง (2) "?1"
["sec-fetch-dest"]=>
สตริง (8) "เอกสาร"
["ยอมรับการเข้ารหัส"]=>
สตริง (17) "gzip, ยุบ, br"
["ยอมรับภาษา"]=>
สตริง (26) "en-GB,en-US;q=0.9,en;q=0.8"
}
โดยเฉพาะอย่างยิ่ง X-Real-IP, X-Fowarded-For ดูเหมือนจะไม่ได้รับการตั้งค่า และไม่ได้ตั้งค่า remote_addr ไฟล์ที่ให้บริการโดยตรงจาก nginx มีการตั้งค่า x-forwarded-for อย่างถูกต้อง ดังนั้น LB จึงส่งส่วนหัวด้านขวาลงมา
ฉันพลาดขั้นตอนหรือไม่?