Score:0

การกำหนดเส้นทางตามสภาพแวดล้อม NGINX

ธง vn

ฉันมีแอปพลิเคชันเดียวที่ทำงานในหลายคลัสเตอร์ K8s; สมมติว่ามีบริการส่วนหน้าและส่วนหลังสองบริการ

ฉันใช้พร็อกซี NGINX ตามคำขอจากส่วนหน้าไปยังบริการส่วนหลัง รุ่น NGINX ปกติ ไม่ NGINX+ นี่คือ nginx.conf:

เซิร์ฟเวอร์ {
    ....
    ตั้ง $back1 "<ชื่อโฮสต์ k8s สำหรับบริการ backend1>";
    ตั้ง $back2 "<k8s ชื่อโฮสต์สำหรับบริการ backend2>";

    ตำแหน่ง /back1 {
        เขียนใหม่ ^/back1/(.*)$ /$1 แตก;
        proxy_pass http://$back1;
    }
    
    <และเหมือนกันสำหรับบริการแบ็กเอนด์ 2>
}

โดยพื้นฐานแล้ว สิ่งที่เกิดขึ้นคือในแอปพลิเคชันส่วนหน้าของฉัน ฉันตั้งค่าที่อยู่บริการส่วนหลังเป็น localhost/back1 และ localhost/back2คำขอกด NGINX ซึ่งตัดออก กลับ1 และ กลับ2 คำนำหน้าและเรียกปลายทางใดก็ตามที่ฉันระบุหลังจากบริการแบ็กเอนด์จริงใน K8s

เนื่องจากฉันมีคลัสเตอร์ K8 หลายตัว ชื่อโฮสต์ของบริการแบ็กเอนด์จึงแตกต่างกัน และฉันจำเป็นต้องคำนึงถึงสิ่งนั้นในการกำหนดค่า NGINX ของฉัน

คำถามคือ: มีวิธีให้ NGINX แยกความแตกต่างระหว่างคลัสเตอร์ K8 ของฉันหรือไม่ บางทีฉันสามารถส่งตัวแปรสภาพแวดล้อมไปยังคอนเทนเนอร์ที่เรียกใช้บริการส่วนหน้าของฉัน และสร้าง ถ้า คำสั่งใน nginx.conf สิ่งที่ต้องการ:

เซิร์ฟเวอร์ {
    ถ้า (${env} = "cluster1") {
        ตั้ง $back1 = "<ชื่อโฮสต์คลัสเตอร์ 1>"
    }
    ถ้า (${env} = "cluster2") {
        ตั้ง $back1 = "<ชื่อโฮสต์คลัสเตอร์2>"
    }
}

หรือถ้าฉันสามารถรันคำสั่งเชลล์ใน nginx conf เพื่อรับชื่อโฮสต์และเขียน if บล็อกที่คล้ายกัน

ฉันขอขอบคุณสำหรับความช่วยเหลือในเรื่องนี้!

Score:0
ธง vn

ฉันไปเส้นทางอื่น - ผ่านเทมเพลต ตัวแปรสภาพแวดล้อม และยูทิลิตี envsubst ซึ่งจัดส่งในอิมเมจ nginx docker ล่าสุด

ในเทมเพลต:

ตั้ง $upstream_back1 "${BACK1}";
ตั้ง $upstream_back2 "${BACK2}";

ใน Dockerfile

RUN envsubst < เทมเพลตของคุณ > /etc/nginx/nginx.conf

โพสต์คำตอบ

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