Score:0

วิธีทำให้ Nginx reverse proxy รอจนกว่าอัปสตรีมจะออนไลน์

ธง pe

ฉันมีแอปเซิร์ฟเวอร์ที่ฟังบนซ็อกเก็ต UNIX และ Nginx ทำหน้าที่เป็นพร็อกซีย้อนกลับ

ตอนนี้ฉันต้องการให้ Nginx รอจนกว่าแอปของฉันจะออนไลน์เมื่อเช่นฉันปรับใช้การอัปเดตและเริ่มต้นใหม่ โดยไม่ส่งคืนข้อผิดพลาดใดๆ ไปยังไคลเอนต์

นี่คือสิ่งที่ฉันมีในการกำหนดค่า Nginx ของฉัน:

ที่ตั้ง / {
# proxy_pass http://localhost:8080;
    proxy_pass http://unix:/tmp/MyApp.sock;
    proxy_set_header โฮสต์ $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
    proxy_cache_bypass $http_upgrade;

    proxy_connect_timeout 60;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
}

อย่างไรก็ตาม เมื่อใดก็ตามที่แอปของฉันหยุดทำงาน Nginx จะกลับมา 502 เกตเวย์เสีย โดยทันที. เห็นได้ชัดว่าไม่มี พร็อกซี_*_หมดเวลา ช่วยการตั้งค่า

สิ่งเดียวกันนี้เกิดขึ้นกับซ็อกเก็ต TCP ในเครื่อง ด้วยซ็อกเก็ต UNIX เมื่อฉันปิดแอป ฉันแน่ใจว่าไฟล์ซ็อกเก็ตถูกลบ เพื่อให้ Nginx เห็นว่าไม่มีแอปทำงานอยู่

ฉันจะบอกให้รอเป็นระยะเวลาหนึ่งจนกว่าซ็อกเก็ตจะใช้งานได้จริงได้อย่างไร

Ivan Shatsky avatar
gr flag
ในการแก้ปัญหา คุณสามารถลองใส่ชื่ออัปสตรีมของคุณลงในตัวแปรตามที่แสดงใน [this](https://sandro-keil.de/blog/let-nginx-start-if-upstream-host-is-unavailable-or -ลง/) บทความ อย่างไรก็ตาม ฉันไม่รู้ว่าสิ่งนี้จะทำงานได้กับซ็อกเก็ต ดังนั้นหากคุณจะลองใช้ โปรดให้ข้อเสนอแนะ
djdomi avatar
za flag
คุณสามารถกำหนดค่า nginx เพื่อให้บริการเนื้อหาเก่าได้หรือไม่

โพสต์คำตอบ

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