Score:0

NGINX: try_files พร้อม proxy_pass ในคอนเทนเนอร์นักเทียบท่า

ธง cn

ฉันใช้ nginx เป็น reverse proxy สำหรับแอปพลิเคชัน Node.js ซึ่งทำงานบน localhost:3000 ทั้ง nginx เองและแอปพลิเคชันของฉันเป็นคอนเทนเนอร์นักเทียบท่าสองคอนเทนเนอร์แยกกัน (แยกไว้เพราะคราวหลังจะลงแอพเพิ่มค่ะ)

ในคอนเทนเนอร์แอปของฉันฉันมีบางอย่าง .webp ภาพทางเลือก เช่น.

$ ล
 
/app/assets/img/image.jpeg
/app/assets/img/image.jpeg.webp
/app/assets/img/other.jpeg

ฉันได้ลองใช้ try_files ด้วย nginx แต่เท่าที่ฉันรู้นี่เป็นไปไม่ได้เพราะ try_files ไม่ "เห็น" ไฟล์ของฉันในคอนเทนเนอร์นักเทียบท่าอื่นเว้นแต่ว่าพวกเขาจะแชร์วอลุ่ม ซึ่งพวกเขาลาดเท คอนเทนเนอร์ของแอปสร้างขึ้นที่อื่นโดยมีทุกอย่างอยู่ภายใน

สิ่งที่ฉันมีอยู่ตอนนี้คือ:

แอปอัปสตรีม {
  เซิร์ฟเวอร์ localhost:3000;
}

[...]

ตำแหน่ง ~* .+\.(jpg|jpeg|svg|png)$ {
  proxy_pass http://app$uri$webp_suffix;
}

[...]

ที่ตั้ง / {
  proxy_pass http://app;
}

นี่คือการทำงานจริง ลูกค้าร้องขอ .jpg ภาพและได้รับ .jpg.webp (เพราะเขาสามารถจัดการได้). ปัญหาคือเขา เสมอ ได้รับ .jpg.webp. สิ่งที่ฉันต้องการคือการตรวจสอบว่ามีไฟล์ที่ร้องขอในแอพของฉันหรือไม่

ดังนั้นสิ่งที่คล้ายกันนี้อาจจะ? แต่มันไม่ทำงาน :-(


ตำแหน่ง ~* .+\.(jpg|jpeg|svg|png)$ {
  ถ้า (-f http://app$uri$webp_suffix) {
    proxy_pass http://app$uri$webp_suffix;
  }
  proxy_pass http://app$uri;
}
jp flag
เพียงคัดลอก assest ไปยังอิมเมจ 'nginx'
Score:1
ธง us

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

วิธีแก้ปัญหาที่ต้องการคือการคัดลอก / แชร์เนื้อหาไปยังสถานที่ที่ nginx สามารถเข้าถึงได้

อีกวิธีหนึ่งคือการใช้ตรรกะในแอปพลิเคชันของคุณ ซึ่งจะตรวจสอบนามสกุลไฟล์และให้บริการไฟล์ตามนั้น จากนั้นแบบง่ายๆ proxy_pass ก็เพียงพอแล้วใน nginx ส่วนหน้า

ตัวเลือกที่สามคือการรวม nginx ไว้ในคอนเทนเนอร์แอปด้วย ในกรณีนี้ง่ายๆ proxy_pass สามารถใช้ใน nginx ส่วนหน้า

YeppThat'sMe avatar
cn flag
โอเค นั่นคือสิ่งที่ฉันคิด tbh แต่ขอบคุณ!

โพสต์คำตอบ

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