ดังนั้นการตั้งค่าปัจจุบันของฉันจึงเป็นดังนี้: ฉันใช้นักเทียบท่า (ติดตั้งแบบไม่มีรูท) และต้องการใช้ คริปแพด (ซึ่งใช้ Node.js) กับ Nginx เป็นพร็อกซีย้อนกลับ (ข้อจำกัดความรับผิดชอบ: ฉันไม่เคยทำงานกับ Nginx มาก่อน)
Cryptpad และ Nginx ต่างก็ทำงานในคอนเทนเนอร์แยกกัน เพื่อให้บริการไฟล์สแตติก ฉันสร้างโวลุ่มซึ่งมีไฟล์สแตติกทั้งหมดจาก Cryptpad อยู่ในนั้นและถูกเมาท์ใน Nginx-Container (อ่านอย่างเดียว) ปัญหาคือ เนื้อหาบางอย่างไม่สามารถแสดงได้ด้วยวิธีนี้ ไฟล์ blob ขนาดใหญ่จะถูกบันทึกไว้ในไดเร็กทอรีภายนอกซึ่งสามารถเข้าถึงได้จาก Cryptpad-Container เท่านั้น (ฉันมีเหตุผลสำหรับเรื่องนี้)
ดังนั้นฉันจึงพยายามบอก Nginx ให้ proxy_pass ร้องขอไฟล์นี้ไปยัง Node-Server ของ Cryptpad แต่ฉันไม่สามารถหาวิธีกำหนดการเปลี่ยนเส้นทางนี้ได้
การกำหนดค่าของฉัน:
- ชื่อของคอนเทนเนอร์ Nginx: nginx
- ชื่อของคอนเทนเนอร์ Cryptpad: cryptpad
- พอร์ตของ Node-Server: 3000
- คอนเทนเนอร์ทั้งสองเชื่อมต่อกับเครือข่ายบริดจ์ (กำหนดเอง) เดียวกัน (และสามารถเข้าถึงได้ด้วยชื่อคอนเทนเนอร์)
Nginx-Config สำหรับเซิร์ฟเวอร์ (ย่อมาจากส่วนที่เกี่ยวข้อง โค้ดแบบเต็มดัดแปลงมาจาก ที่นี่)
[...]
สถานที่ ^~ /block/ {# แก้ไขตำแหน่งบล็อกเพื่อทดสอบพร็อกซี (เข้าถึงได้ง่ายกว่า blob)
add_header แคชควบคุมอายุสูงสุด = 0;
#try_files $uri =404;# รหัสเดิม
try_files http://cryptpad:3000/$request_uri =409;# รหัสข้อผิดพลาดโดยอำเภอใจเพื่อแยกความแตกต่างจากข้อผิดพลาดปกติ
}
[...]
ตำแหน่ง @node {# ใช้เพื่อพร็อกซีตำแหน่งที่ไม่ได้จัดการทั้งหมดไปยังโหนด
proxy_pass http://cryptpad:3000;
}
try_files /www/$uri /www/$uri/index.html /customize/$uri @node;
แต่เมื่อใดก็ตามที่เข้าถึง /block/ เซิร์ฟเวอร์จะส่งคืน 409 ดังนั้นการเปลี่ยนเส้นทางจึงไม่ทำงาน
ฉันยังลองด้วย proxy_pass http://cryptpad:3000/$request_uri/;
หรือ proxy_pass http://cryptpad:3000;
(ซึ่งส่งผลให้เป็น 404) และ try_files @node =409;
.
มีใครรู้วิธีทำให้การเปลี่ยนเส้นทางภายในนี้ทำงานหรืออย่างน้อยวิธีตรวจสอบการรับส่งข้อมูลระหว่างสองคอนเทนเนอร์