Score:0

Nginx: ไม่สามารถพร็อกซีบางเส้นทางไปยังเซิร์ฟเวอร์ Node.js (ระหว่างคอนเทนเนอร์ dwo docker)

ธง us

ดังนั้นการตั้งค่าปัจจุบันของฉันจึงเป็นดังนี้: ฉันใช้นักเทียบท่า (ติดตั้งแบบไม่มีรูท) และต้องการใช้ คริปแพด (ซึ่งใช้ 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;.

มีใครรู้วิธีทำให้การเปลี่ยนเส้นทางภายในนี้ทำงานหรืออย่างน้อยวิธีตรวจสอบการรับส่งข้อมูลระหว่างสองคอนเทนเนอร์

Michael Hampton avatar
cz flag
คุณควรเริ่มต้นใหม่ด้วยการกำหนดค่าตัวอย่าง ตอนนี้คุณอยู่ไกลจากมันมาก
Max.-F. avatar
us flag
@MichaelHampton ฉันไม่ได้เปลี่ยนแปลงมากขนาดนั้น การเปลี่ยนแปลงที่ใหญ่ที่สุดคือพร็อกซีเพิ่มเติมที่อธิบายไว้เพื่อเปิดใช้งานการสื่อสารข้ามคอนเทนเนอร์
Score:0
ธง us

หลังจากพยายามเพิ่มเติม ฉันพบการกำหนดค่าที่ใช้งานได้: ฉันเพียงแค่คัดลอกบรรทัดอื่นๆ จาก proxy_passes จากตัวอย่าง ดังนั้นคำนิยามที่เป็นผลลัพธ์สำหรับ /block/ จึงมีลักษณะดังนี้

ที่ตั้ง ^~ /block/ {
    add_header แคชควบคุมอายุสูงสุด = 0;

    proxy_pass http://cryptpad:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header โฮสต์ $host;
    proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
    proxy_hide_header Cross-Origin-Resource-Policy;
    #add_header ข้ามต้นทาง-ทรัพยากร-นโยบาย ข้ามต้นทาง;
    proxy_hide_header Cross-Origin-Embedder-นโยบาย;
    #add_header Cross-Origin-Embedder-นโยบายต้องการ-corp;
}

โพสต์คำตอบ

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