Score:1

NGINX สามารถโทรหาบริการอื่นก่อนจัดส่ง

ธง us

เรากำลังใช้ NGINX เป็น reverse proxy โดยจะโอนสายจากภายนอกไปยัง Java microservices ภายในของเรา:

ป้อนคำอธิบายรูปภาพที่นี่

เราต้องการเพิ่มบริการพิเศษที่จะทำหน้าที่เป็น "คนกลาง" แต่เฉพาะในส่วนที่ร้องขอเท่านั้น มีวัตถุประสงค์เพื่อตกแต่งคำขอดั้งเดิม (ตรวจสอบสิทธิ์ เพิ่ม/แก้ไขส่วนหัว HTTP ตรวจสอบสิทธิ์การเข้าถึง) "งานตกแต่ง" เกี่ยวข้องกับตรรกะทางธุรกิจที่ซับซ้อนซึ่งไม่สามารถกำหนดค่าบน NGINX ได้

เราต้องการให้เรียกบริการเป็นอันดับแรก จากนั้นจึงส่งต่อการตอบสนอง (โดยเฉพาะส่วนหัว HTTP!) เป็นคำขอไปยังไมโครเซอร์วิสตัวใดตัวหนึ่ง อาจเลือกที่จะเรียกบริการที่จัดส่งด้วยเนื้อความดั้งเดิม แต่ด้วยส่วนหัว HTTP ที่ส่งคืนจากบริการตกแต่ง

เมื่อบริการส่งคืนข้อผิดพลาด HTTP บริการควรส่งคืนโดยตรงไปยังผู้โทรโดยไม่ต้องสั่งการ

บริการนี้ถูกนำมาใช้เป็นแอปพลิเคชัน Java Spring Boot เป็นบริการบนเว็บปกติ

เป็นไปได้ไหมที่จะกำหนดค่าใน NGINX และอย่างไร

เพื่อความชัดเจน: ฉันไม่ได้ถามเกี่ยวกับวิธีการใช้บริการเฉพาะนี้สิ่งที่ฉันต้องการคือเพียงรู้ว่า (และอย่างไร) สามารถกำหนดค่า NGINX เพื่อให้เรียกบริการอื่นก่อนที่จะส่งการโทร และ NGINX นั้นจะส่งส่วนหัว (และอาจรวมถึงเนื้อหา แต่ไม่จำเป็น) ที่ส่งคืนจากบริการนี้ไปยังการโทร

ป้อนคำอธิบายรูปภาพที่นี่

in flag
สิ่งใดที่สามารถใช้ตรรกะทางธุรกิจของคุณ นั่นจะเป็นตัวกำหนดการตั้งค่าที่เหลือ
in flag
nginx สามารถขยายได้อย่างกว้างขวางด้วยสคริปต์ เอกสารประกอบด้วยตัวอย่างสำหรับการให้สิทธิ์ คุณเคยลองทำสิ่งนี้แล้วหรือยัง
in flag
คุณจะไม่ได้รับคำแนะนำผลิตภัณฑ์ใดๆ ที่นี่ ซึ่งนอกประเด็น
Honza Zidek avatar
us flag
@GeraldSchneider ฉันกำลังถามวิธีกำหนดค่า NGINX เพื่อโทรหาบริการเว็บอื่นก่อนที่จะส่งการโทร **ไม่รับคำแนะนำเกี่ยวกับผลิตภัณฑ์ใดๆ** และง่ายกว่าสำหรับเราในการเขียนตรรกะทางธุรกิจใน Java แทนที่จะเขียนสคริปต์ใน NGINX สุดท้าย แต่ไม่ท้ายสุด สำหรับการเปลี่ยนแปลงใด ๆ ใน NGINX เราต้องถามทีมดูแลระบบ - เราต้องการยืดหยุ่นและดำเนินการเปลี่ยนแปลงด้วยตนเอง NGINX รับผิดชอบในสิ่งอื่นๆ มากมาย ไม่ใช่แค่แอปของเราเท่านั้น การดำเนินการรวมถึงการอ่านจากฐานข้อมูล การแคชข้อมูล และกฎทางธุรกิจอย่างมากมายที่อยู่นอกขอบเขตความรับผิดชอบของพร็อกซีย้อนกลับ
in flag
ขออภัย ฉันเข้าใจคำถามของคุณผิด ดูเหมือนว่าคุณกำลังมองหาบริการที่ใช้ตรรกะ จากนั้นกลับไปที่คำถาม คุณลองใช้ [ตัวอย่างจากเอกสารประกอบ](https://github.com/nginx/njs-examples/) แล้วหรือยัง หากคุณพบปัญหากับพวกเขา คุณควรเพิ่มคำถามของคุณ
Honza Zidek avatar
us flag
@GeraldSchneider ฉันแก้ไขคำถามเพื่อหลีกเลี่ยงความเข้าใจผิดนี้ :) คุณช่วยนำทางฉันอย่างละเอียดในตัวอย่างได้ไหม ฉันไม่คุ้นเคยกับคำศัพท์เฉพาะของ NGINX และจะช่วยฉันได้ถ้าคุณส่งต่อฉันโดยตรงไปยังส่วนที่เกี่ยวข้องกับปัญหาของฉัน (ขออภัยหากฟังดูเกียจคร้าน แต่ฉันเป็นโปรแกรมเมอร์ Java และฉันไม่มีความทะเยอทะยานที่จะเป็นผู้ดูแล :))
Score:3
ธง it

ใช่ มันเป็นไปได้

ลองดูที่ นี้ ตัวอย่าง. ในระยะสั้นคุณสามารถใช้ auth_request คำสั่งเพื่อดึงส่วนหัวเพิ่มเติมที่ต้องการ ใช้ proxy_set_header เพื่อเพิ่มส่วนหัวเพิ่มเติมในคำขอหลัก

Paul avatar
cn flag
ยินดีต้อนรับสู่ความผิดพลาดของเซิร์ฟเวอร์! คำตอบของคุณชี้ให้เห็นวิธีแก้ปัญหาที่ใช้การได้สำหรับคำถามนี้ผ่านทางเว็บไซต์อื่น กลุ่มคำถามและคำตอบของเว็บไซต์ Stack Exchange [โดยทั่วไปมักจะขมวดคิ้วกับคำตอบประเภทนี้](https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers ). โปรดอ่าน [ฉันจะเขียนคำตอบที่ดีได้อย่างไร](http://serverfault.com/help/how-to-answer) และพิจารณาแก้ไขคำตอบของคุณเพื่อรวมขั้นตอนที่จำเป็นในการแก้ไขปัญหา และอย่าลืมดู [ทัวร์ชมเว็บไซต์](http://serverfault.com/tour)

โพสต์คำตอบ

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