Score:0

การตั้งค่า Context Path ใน nginx

ธง cn

ฉันพยายามให้บริการแอพและไฟล์ที่รวม webpack จากเส้นทางบริบท ไฟล์กำหนดค่า Nginx มีดังต่อไปนี้:

nginx.conf

เซิร์ฟเวอร์ {

  ฟัง 80;
  รูท /usr/share/nginx/html;
  ดัชนี index.html index.htm;

  ที่ตั้ง / {
    try_files $uri $uri/ /mfeexample/index.html;
  }

  สถานที่ /mfeexample/ {   
    try_files $uri $uri/ /mfeexample/index.html;
  }
}

ไฟล์นักเทียบท่า

#สร้างสภาพแวดล้อม
จาก node:14.2.0-alpine เป็น build

#ทำเนียบการทำงาน
เวิร์คดีอาร์ /app

#คัดลอกไฟล์แพ็กเกจโหนดไปยังไดเร็กทอรีการทำงาน
แพ็คเกจ COPY.* .

#การติดตั้งการพึ่งพาแอป
RUN การติดตั้ง npm -- เงียบ

#คัดลอกโค้ดทั้งหมด
สำเนา .

#RUN งานสร้าง
RUN npm รันบิลด์

#บรรยากาศการผลิต
จาก nginx:เสถียรอัลไพน์

# ปรับใช้แอปพลิเคชันที่สร้างขึ้นกับเซิร์ฟเวอร์ Nginx
# /usr/share/nginx/html เป็นไดเร็กทอรีแบบคงที่ของ Nginx ที่ใช้ในการให้บริการแอปพลิเคชัน
COPY --from=build /app/build /usr/share/nginx/html/mfeexample

# ลบการกำหนดค่าเริ่มต้นของ Nginx ในคอนเทนเนอร์ Nginx
RUN rm /etc/nginx/conf.d/default.conf

# ใช้ไฟล์การกำหนดค่าใหม่
สำเนา nginx/nginx.conf /etc/nginx/conf.d/default.conf

# เปิดเผยแอปพลิเคชันบน PORT 80
เปิดเผย 80

# เริ่มเซิร์ฟเวอร์ Nginx
CMD ["nginx", "-g", "daemon off;"]

ตอนนี้ดูที่แท็บเครือข่ายในเบราว์เซอร์ ฉันพบไฟล์ทั้งหมดที่ให้บริการที่ http://localhost:3000/mfeexample/ นั่นคือสิ่งที่ฉันต้องการ อย่างไรก็ตาม เมื่อฉันลองใช้เส้นทางที่ซ้อนกัน เส้นทางที่ซ้อนกัน ฉันหมายถึง http://localhost:3000/mfeexample/customer/ โดยดูที่แท็บเครือข่ายอีกครั้ง nginx กำลังมองหาไฟล์ภายใต้ http://localhost:3000/mfeexample/ customer/index.html แต่ฉันต้องการให้ nginx ค้นหาไฟล์จาก http://localhost:3000/mfeexample เสมอ

PS: โปรดจำไว้ว่าฉันยังใหม่กับ nginx และฉันได้ทำการทดลองและข้อผิดพลาดเพื่อให้ได้ถึงจุดนี้

ขอบคุณล่วงหน้า.

us flag
คุณช่วยอธิบายคำถามของคุณด้วยตัวอย่างที่ชัดเจน: "เมื่อฉันขอ URL A ฉันต้องการรับไฟล์ B จากระบบไฟล์" "เมื่อฉันขอ URL C ฉันต้องการรับไฟล์ D จากระบบไฟล์" เป็นการยากที่จะดูว่าคุณต้องการอะไรจากคำถามของคุณ โปรดอธิบายความหมายของเส้นทางบริบทด้วย
Sampreeth Amith Kumar avatar
cn flag
เส้นทางบริบท ฉันหมายถึงเส้นทาง URL ที่แอปพลิเคชันจำเป็นต้องให้บริการ ในกรณีของฉัน ฉันต้องการให้แอปพลิเคชันแสดงที่ /mfeexample ไม่ใช่ที่ระดับรูท ไฟล์ทั้งหมดควรให้บริการจาก /mfeexample
us flag
โปรดเพิ่มตัวอย่างที่ตรงตามที่ฉันขอด้านบนหากไม่มีตัวอย่างที่ชัดเจน คำถามนี้ไม่สามารถตอบได้
Sampreeth Amith Kumar avatar
cn flag
เพื่อยกตัวอย่าง เมื่อฉันกด URL http://localhost:3000/ แอปพลิเคชันตอบสนองไม่ควรแสดงผล แต่เมื่อฉันกด URL http://localhost:3000/mfeexample/ แอปพลิเคชันควรแสดงเนื้อหาและให้บริการทั้งหมด ไฟล์สแตติกจาก http://localhost/mfeexample ตอนนี้ถ้าฉันลองเส้นทางซ้อนเช่น http://localhost:3000/mfeexample/customer/ แอปพลิเคชันตอบสนองเดียวกันควรให้บริการไฟล์คงที่ทั้งหมดจาก http://localhost:3000/mfeexample/ แต่ควรแสดงเนื้อหาใน http:// localhost:3000/mfeexample/customer/ ฉันหวังว่านี่จะช่วยได้.
Sampreeth Amith Kumar avatar
cn flag
แอปพลิเคชันควรส่งคืน main.js จากแอปพลิเคชัน React ซึ่งควรอยู่ที่ http://localhost:3000/mfeexample ผู้ใช้ควรสามารถเยี่ยมชม http://localhost:3000/mfeexample หรือ http://localhost:3000/mfeexample/customer อย่างใดอย่างหนึ่ง อย่างไรก็ตาม ปัญหาปัจจุบันคือ เมื่อไปที่ http://localhost:3000/mfeexample/customer เซิร์ฟเวอร์พยายามให้บริการ main.js จาก http://localhost:3000/mfeexample/customer แทนเส้นทางพื้นฐานที่ http://localhost:3000/mfeexample
us flag
ขออภัย ตัวอย่างของคุณยังไม่แสดงว่า URL แต่ละรายการควรให้บริการเส้นทางระบบไฟล์ใด โปรดแก้ไขคำถามและเพิ่ม URL - การแมปเส้นทางที่นั่น

โพสต์คำตอบ

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