เรามีเซิร์ฟเวอร์ปรับสมดุลการโหลดสองตัว โดยที่เราได้โฮสต์แอปพลิเคชัน asp.net 3.5 ไว้ในขณะนี้ เรากำลังใช้คำขอ userhostaddress เพื่อรับ IP ของผู้เยี่ยมชม แต่มันให้ Load Balancer IP แทนที่จะเป็น IP จริง ใครสามารถมีรหัสสำหรับสิ่งนี้
วิธีรับ IP ของผู้เยี่ยมชมบนเครื่องโหลดบาลานซ์โดยใช้ asp.net
คำตอบ (3)
ปัญหานั้นเกี่ยวข้องกับการที่ "โหลดบาลานเซอร์" ทำหน้าที่เป็นพร็อกซีมากกว่า คุณใช้โหลดบาลานเซอร์ประเภทใด ฉันรู้ว่าเซิร์ฟเวอร์ Microsoft ISA มีการตั้งค่าให้ส่งที่อยู่ IP ของผู้ใช้ดั้งเดิมผ่านไปยังเว็บเซิร์ฟเวอร์
มิฉะนั้นคุณจะต้องเขียนเพจเพื่อดัมพ์ตัวแปรเซิร์ฟเวอร์และดูว่ามีการเพิ่มตัวแปรเซิร์ฟเวอร์เพิ่มเติมที่ให้ที่อยู่ IP ไคลเอนต์จริงแก่คุณหรือไม่
ฉันคิดว่าคุณต้องค้นหาไม่เพียง แต่สำหรับ HTTP_X_FORWARDED_FOR เท่านั้น แต่สำหรับทั้งหมดนั้น ขึ้นอยู่กับว่าโหลดบาลานซ์ของคุณใช้อะไร
Context.Request.ServerVariables[CheckAllBelowList]
"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",
การส่งคืนหนึ่งในนั้นคือ Ip ที่แท้จริงของไคลเอนต์ของคุณ ยกเว้นว่าเป็นพร็อกซีอื่น ฉันยังต้องเรียนรู้ว่าบางคนสามารถรับสิ่งนี้ได้อย่างไร เพื่อค้นหาผู้ใช้ที่อยู่หลังพร็อกซี 2-3 ตัว...
ท่านใดทราบเรื่องอื่นกรุณาบอกด้วยนะครับ
ขึ้นอยู่กับเซิร์ฟเวอร์การปรับสมดุลโหลด IP ของลูกค้าสามารถ/ควรถูกเขียนไปที่:
Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
แต่ระวังหากผู้ใช้อยู่หลังพร็อกซีด้วย ค่าอาจเป็นไคลเอ็นต์ดั้งเดิมของพร็อกซีแทนที่จะเป็นไคลเอ็นต์ของโหลดบาลานเซอร์ (ซึ่งในกรณีนี้คือ IP พร็อกซี) ฉันไม่แน่ใจว่าพฤติกรรมใดที่เป็น "ปกติ"
หวังว่าจะช่วยนะอเล็กซ์