เป็นไปได้หรือไม่ที่จะ "เสียบ" บริการเว็บต่างๆ (เปิดเผยจากคอนเทนเนอร์นักเทียบท่าที่แตกต่างกัน) ในเซิร์ฟเวอร์ nginx เดียวกัน
ต่อไปนี้คือตัวอย่างง่ายๆ เพื่อให้เข้าใจแนวคิดทั่วไป:
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
client_max_body_size 10M;
ชุดอักขระ utf-8;
server_name my.server.org;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
ที่ตั้ง / {
รวม proxy_params;
proxy_pass http://127.0.0.1:8081/;
}
ตำแหน่ง / คงที่ / {
รวม proxy_params;
รวม /etc/nginx/mime.types;
นามแฝง /var/www/app/static/;
}
ที่ตั้ง ^~ /app2/ {
รวม proxy_params;
proxy_pass http://127.0.0.1:8082;
}
ที่ตั้ง ^~ /app3/ {
รวม proxy_params;
ปิด proxy_redirect;
proxy_set_header โฮสต์ $http_host;
proxy_pass http://127.0.0.1:8083;
}
}
ที่ไหน ที่ตั้ง /
เป็นรูทของแอปพลิเคชันแรกพร้อมกับไฟล์สแตติกในบล็อกตำแหน่งถัดไป
แอปพลิเคชั่นแรกนี้ทำงานที่ http://my.server.org/.
ฉันต้องการเข้าถึงแอปพลิเคชันอีกสองรายการที่ http://my.server.org/app2/ และ http://my.server.org/app3/ โดยยังคงชื่อเซิร์ฟเวอร์เดิมไว้ my.server.org
.
แอปพลิเคชันเหล่านี้เกี่ยวข้องกับแอปพลิเคชันหลัก แต่เป็นอิสระจากกันโดยสิ้นเชิง กล่าวคือ แอปพลิเคชันเหล่านี้ให้บริการจากองค์ประกอบนักเทียบท่าอื่นๆ โดยพอร์ตของแอปพลิเคชันเหล่านี้จะถูกเปิดเผยตามลำดับที่ 8082 และ 8083
เป็นไปได้ไหมที่จะบรรลุภารกิจง่ายๆ เซิร์ฟเวอร์
บล็อก?
ในขณะนี้ฉันได้รับ 404 เมื่อไปถึง URL อีกสองรายการนั้น
โดยพื้นฐานแล้วฉันต้องการแมปพอร์ต URL ที่ใช้งานได้และองค์ประกอบย่อยทั้งหมดไปยังตำแหน่งที่มีชื่อ:
http://my.server.org:8081/... -> http://my.server.org/...
http://my.server.org:8082/... -> http://my.server.org/app2/...
http://my.server.org:8083/... -> http://my.server.org/app3/...
แก้ไข:
ไม่ว่าจะเป็น:
ตำแหน่ง /app3/ {
ถ้า ($http_referer ~ "^$scheme://$http_host/app3/") {
เขียนใหม่ ^/app3/(.*) $scheme://$http_host/app3/$1 redirect;
}
รวม proxy_params;
ปิด proxy_redirect;
proxy_set_header โฮสต์ $http_host;
proxy_pass http://127.0.0.1:8083;
}
หรือสิ่งนี้:
ตำแหน่ง ~*/app3/(.*)$ {
รวม proxy_params;
ปิด proxy_redirect;
proxy_set_header โฮสต์ $http_host;
proxy_pass http://127.0.0.1:8083/$1;
}
"ใช้งานได้" เหมือนเดิม แต่ยังไม่สมบูรณ์เพราะยังเหลืออีกสองประเด็นคือ
- ให้บริการเฉพาะ HTML ดิบเท่านั้น (เช่น ไม่มีสไตล์: "502 เกตเวย์ที่ไม่ดี" ในไฟล์ css เป็นต้น)
- ลิงก์ภายในหน้าชี้ไปที่ เช่น
http://my.server.org/subfeature/subitem
แทน http://my.server.org/app3/subfeature/subitem
. ดังนั้นพวกเขาจึง "ขาด" /app3
คำนำหน้าและฉันไม่รู้ว่าจะเพิ่มได้อย่างไรหากไม่อยู่ในตำแหน่งที่ควรจะเป็น