ฉันสร้างเว็บแอปที่จะรับฟังพอร์ตและจัดการคำขอ HTTP ตัวอย่างเช่น ถ้าฉันเรียกใช้ในเครื่องที่ 127.0.0.1:3000
. ฉันสามารถเข้าถึงได้ด้วย http://127.0.0.1:3000/path/within/app
บนเบราว์เซอร์ของฉัน ฉันต้องการปรับใช้บนหนึ่งในเซิร์ฟเวอร์ของฉัน ซึ่งกำหนดค่าด้วย จิงซ์
เพื่อจัดการคำขอที่เข้ามาทั้งหมด (และ TLS) และส่งต่อไปยังแอปพลิเคชันต่างๆ (ฟังที่ http://127.0.0.1:xxx
). โดยปกติแล้ว ฉันจะให้แต่ละแอปมีโดเมนย่อยที่แตกต่างกัน (เช่น access แอป1
กับ app1.example.com
และ แอป2
กับ app2.example.com
) แต่จะสะดวกกว่าถ้าฉันสามารถใช้ subpath (เช่น access แอป1
กับ example.com/app1
และ แอป2
กับ example.com/app2
). แต่ฉันไม่แน่ใจว่าจะกำหนดค่าอย่างไร
ไฟล์การกำหนดค่าปัจจุบันของฉันมีลักษณะดังนี้ สมมติว่าแอปของฉันกำลังฟังอยู่ที่ 127.0.0.1:3000
.
ที่ตั้ง ^~ /app1 {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header โฮสต์ $http_host;
ปิด proxy_redirect;
proxy_pass http://127.0.0.1:3000/;
}
ฉันต้องการบรรลุสิ่งต่อไปนี้
- เมื่อฉันเข้าถึง
https://example.com/app1
ก็จะเทียบเท่ากับการเข้าถึง http://127.0.0.1:3000
.
- เมื่อฉันเข้าถึง
https://example.com/app1/path/within/app
ก็จะเทียบเท่ากับการเข้าถึง http://127.0.0.1:3000/path/within/app
.
อย่างไรก็ตาม ด้วยไฟล์คอนฟิกูเรชันที่กล่าวถึงข้างต้น เฉพาะส่วนแรกเท่านั้นที่ใช้งานได้ ถ้าฉันเข้าถึง https://example.com/app1/path
แอพของฉันร้องเรียนว่ามันเป็น http://127.0.0.1:3000//path
ที่เข้าถึงได้จริง และไม่รู้วิธีจัดการ //เส้นทาง
.
ฉันไม่ต้องการแก้ไขส่วนใดส่วนหนึ่งของแอปพลิเคชันของฉันเพื่อให้สามารถทำงานได้โดยอิสระ หากฉันตัดสินใจให้โดเมนย่อยในอนาคต และคาดว่าจะแก้ไขด้วยการแก้ไขเฉพาะไฟล์การกำหนดค่า nginx หากเป็นไปได้ นอกจากนี้ ฉันทราบปัญหาว่าลิงก์ที่คลิกได้ใดๆ ที่สร้างโดยแอปจะต้องจัดการเส้นทางย่อยด้วย แต่แอปนี้เรียบง่ายพอที่จะไม่เป็นปัญหา
ขอบคุณ.