ฉันต้องการวิธีเปลี่ยนเส้นทางลูกค้าเมื่อไม่มีการกำหนดเส้นทางที่มีอยู่ เมื่อฉันใส่การกำหนดค่าส่งคืน 301 ดูเหมือนว่า nginx จะไม่สนใจการกำหนดค่าตำแหน่งใด ๆ มันเปลี่ยนเส้นทางทุกอย่าง
ชื่อโฮสต์ในการเปลี่ยนเส้นทางต้องเป็นไดนามิก (มาจากไคลเอนต์) จริงๆ แล้วเซิร์ฟเวอร์เหล่านี้เป็นคอนเทนเนอร์และปรับใช้กับสภาพแวดล้อม Dev/Prod ดังนั้น URL ไคลเอนต์จึงเปลี่ยนจาก dev.example.com เป็น example.com ฉันไม่ต้องการทำการแลกเปลี่ยนการกำหนดค่าตามสภาพแวดล้อม
ฉันใช้ v1.18 บน RHEL พร็อกซีเซิร์ฟเวอร์เป็นแอปเชิงมุมที่จัดการโดยนักพัฒนาที่เกี่ยวข้อง
เซิร์ฟเวอร์ {
ฟัง 80;
ชื่อเซิร์ฟเวอร์ _;
ดัชนี index.html;
สถานที่ = /บริการ/a {
proxy_pass http://svc-a.local/service/a/;
}
สถานที่ /บริการ/a/ {
proxy_pass http://svc-a.local/service/a/;
}
สถานที่ = /บริการ/b {
proxy_pass http://svc-b.local/service/b/;
}
สถานที่ /บริการ/b/ {
proxy_pass http://svc-b.local/service/b/;
}
สถานที่ = /บริการ/x {
proxy_pass http://svc-x.local/service/x/;
}
สถานที่ /บริการ/x/ {
proxy_pass http://svc-x.local/service/x/;
}
สถานที่ = / บ้าน {
proxy_pass http://home.local/home/;
}
สถานที่ /บ้าน/ {
proxy_pass http://home.local/home/;
}
# kubernetes ตรวจสอบสิ่งนี้ แต่ล้มเหลวในการรับ 301
ตำแหน่ง /nginx_status {
stub_status บน;
access_log off;
}
# หากไม่ตรงกับด้านบนให้ไปที่ /HOME
#ลอง#1
ส่งคืน 301 http://$host/home/;
#ลอง#2
ที่ตั้ง = / {
ส่งคืน 301 http://$host/home/;
}
#ลอง#3
กลับ 301 /บ้าน/;
#ลอง#4
ที่ตั้ง = / {
proxy_pass http://home.local/home/;
}
}