Score:0

วิธีกำหนดค่า HAProxy ให้ละเว้นส่วนหัวไคลเอ็นต์ 'Pragma: no-cache'

ธง ve

เรามีบริการเว็บที่อยู่เบื้องหลังเซิร์ฟเวอร์ HAProxy ที่กำลังทำงานอยู่ แคชพร็อกซีย้อนกลับ การกำหนดค่า เซิร์ฟเวอร์ส่วนหลังส่ง การควบคุมแคช ส่วนหัวอย่างถูกต้องสำหรับการตอบกลับทั้งหมด ดังนั้น HAProxy จึงสามารถแคชการตอบกลับทั้งหมดตามข้อกำหนด HTTP

อย่างไรก็ตาม เมื่อผู้ใช้กดปุ่ม Shift+Reload เช่น Google Chrome ลูกค้า (Chrome) ส่ง Pragma: ไม่มีแคช และ การควบคุมแคช: ไม่มีแคช ซึ่งบังคับให้ HAProxy ดึงคำขอจากเซิร์ฟเวอร์ส่วนหลังเสมอ เห็นได้ชัดว่าการโจมตี DDoS สามารถใช้กลอุบายเดียวกันนี้เพื่อทำให้เซิร์ฟเวอร์แบ็กเอนด์โหลดมากขึ้นได้อย่างง่ายดาย

ดังที่เราทราบแล้วว่าส่วนหัวของแคชนั้นถูกต้อง เราจะกำหนดค่า HAProxy ให้ละเว้นไคลเอ็นต์ที่ส่งมาได้อย่างไร Pragma: ไม่มีแคช และหลีกเลี่ยงการโทรแบ็กเอนด์เมื่อคำขอสามารถดำเนินการได้โดยตรงจากแคช HAProxy

ฉันรู้ว่าการเพิกเฉยส่วนหัวนี้จะไม่โอเคสำหรับการใช้พร็อกซีทั่วไป แต่ในกรณีนี้ เราควบคุมทั้งพร็อกซีย้อนกลับและแบ็กเอนด์ ดังนั้นเราจึงรู้ว่าสิ่งนี้ใช้ได้

ต่อไปนี้คือตัวอย่างการตอบกลับจากเซิร์ฟเวอร์ส่วนหลังซึ่งจะดำเนินการใหม่จากส่วนหลังเมื่อไคลเอนต์ส่ง การควบคุมแคช: ไม่มีแคช และ Pragma: ไม่มีแคช:

การควบคุมแคช: สาธารณะ, max-age=31536000, s-maxage=31536000
ความยาวเนื้อหา: 463
ประเภทเนื้อหา: รูปภาพ/svg+xml
วันที่: พฤ. 24 มิ.ย. 2564 14:14:19 GMT
ชื่อแท็ก: "338"
หมดอายุ: วันศุกร์ที่ 24 มิถุนายน 2022 14:14:19 GMT
เซิร์ฟเวอร์: อาปาเช่
x-content-type-options: nosniff

เห็นได้ชัดว่า โดยสิ้นเชิง ไม่มีจุดหมายที่จะดึงข้อมูลนี้จากเซิร์ฟเวอร์แบ็กเอนด์อีกครั้งเนื่องจากใช้ได้หนึ่งปีสำหรับผู้ใช้ที่ใช้ URL ที่ระบุ นอกจากนี้ที่น่าสังเกตก็คือ NGINX ไม่ให้เกียรติส่วนหัว [client] Pragma ตามค่าเริ่มต้น.

ve flag
ในความเป็นจริงเรามีฟรอนท์เอนด์ที่ซ้ำซ้อนหลายตัวที่ทำงานแบบขนานและแบ็คเอนด์ที่ซ้ำซ้อนหลายตัว แต่จริงๆ แล้วมันไม่ได้เปลี่ยนแปลงอะไรเกี่ยวกับปัญหา ดังนั้นฉันจึงเขียนคำถามง่ายๆ ข้างต้น เช่น มีเพียงหนึ่งส่วนหน้าและหนึ่งเซิร์ฟเวอร์ส่วนหลัง
ve flag
https://www.haproxy.com/documentation/aloha/latest/traffic-management/lb-layer7/caching-small-objects/ กล่าวว่า "*Objects จะถูกแคชเฉพาะเมื่อสิ่งต่อไปนี้เป็นจริง: [...] การตอบสนองไม่มีส่วนหัว "การควบคุมแคช: ไม่มีแคช"*" ซึ่งแสดงว่าไม่สามารถกำหนดค่าได้ในขณะนี้ นั่นเป็นทางเทคนิคเกี่ยวกับส่วนประกอบของ Aloha แต่ฉันเดาว่ามันอาจใช้ได้กับ HAProxy ทั้งหมดเช่นกัน

โพสต์คำตอบ

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