nginx ส่งการตอบสนองที่ว่างเปล่า 200 ข้อ


19

ฉันกำลังกำหนดค่าเซิร์ฟเวอร์ล้มเหลวที่ได้รับมอบหมายให้ยอมรับคำขอใด ๆ ที่เข้ามาและตอบกลับด้วยการตอบสนองเปล่า 200 ความคิดคือการลดเวลาตอบกลับและเพื่อให้แน่ใจว่าเราไม่ได้ส่ง 40x หรือ 50x

ฉันพยายามใช้return 200;สำหรับตำแหน่งที่ต้องการภายใน Nginx แต่ระบบการตรวจสอบของฉัน (Pingdom) ไม่ชอบการตอบสนองและพิจารณาว่าเซิร์ฟเวอร์ไม่ตอบสนอง

มีวิธีที่ดีกว่าในการทำเช่นนี้แน่นอนด้วยค่าใช้จ่ายน้อยที่สุดบนเซิร์ฟเวอร์?

คำตอบ:


23

รหัสสถานะ HTTP 204 No Contentหมายถึงการพูดว่า "ฉันได้ทำตามคำขอเรียบร้อยแล้ว แต่ไม่มีเนื้อหาที่จะส่งคืน":

10.2.5 204 ไม่มีเนื้อหา

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

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

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


สวัสดีอเล็กซ์ขอบคุณสำหรับการบันทึก เพียงแค่สงสัยว่าในทุกวันนี้เบราว์เซอร์หลัก ๆ จำรหัสตอบรับ 204 ได้หรือไม่ เช่นถ้าเซิร์ฟเวอร์ของฉันเริ่มส่ง 204 รอบมีความเป็นไปได้ไหมที่ผู้เข้าชมบางคน (ข้ามเบราว์เซอร์โทรศัพท์มือถือเทอร์มินัล) ได้รับข้อผิดพลาดหรือไม่?
Sparsh Gupta

1
@SparshGupta ฉันไม่ใช่ผู้เชี่ยวชาญด้านความเข้ากันได้ของเบราว์เซอร์ขออภัย ฉันได้ทำการตรวจสอบอย่างรวดเร็วในเบราว์เซอร์สองตัว (FF 7 และ Safari ภายใต้ Mac OSX) - พวกเขาไม่ทำอะไรเลย ตัวอย่างเช่นหากคุณมีหน้าเปิดอยู่แล้วคุณใส่ URL ที่ส่งคืน 204 ลงในแถบที่อยู่แล้วกด Enter เบราว์เซอร์ทั้งสองจะยังคงแสดงหน้าก่อนหน้านั้น
Alexander Azarov

29

คุณสามารถให้ nginx คืนค่าว่างเปล่า HTTP 200 โดยบล็อกการกำหนดค่าเช่น:

location = /health {
  return 200;
  #access_log off;
}

คุณสามารถยกเลิกการใส่เครื่องหมายaccess_logบรรทัดถ้าคุณไม่ต้องการให้บันทึกการตรวจสุขภาพเหล่านั้นทั้งหมด


6
ควรสังเกตว่าเครื่องหมาย '=' หลังจากตำแหน่งมีความสำคัญ ถ้าไม่มีมันไฟล์นั้นจะต้องมีอยู่มิฉะนั้น nginx จะไม่คืนค่า 200 ด้วยคุณสามารถสร้างตำแหน่งใด ๆ ที่คุณต้องการและไม่ต้องกังวลกับไฟล์และ nginx จะคืนค่า 200 อย่างมีความสุข
Florin Andrei

วิธีการรวมที่มีการรับรองความถูกต้องขั้นพื้นฐานเช่นคำขอการตรวจสอบสิทธิ์ที่ส่งคืน 200 และ 401 ที่ไม่ได้รับการรับรองความถูกต้อง?
คิริล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.