ใน Nginx เราพยายามเปลี่ยนเส้นทาง URL ดังนี้:
http://example.com/some/path -> http://192.168.1.24
ตำแหน่งที่ผู้ใช้ยังคงเห็น URL ดั้งเดิมในเบราว์เซอร์ของตน เมื่อผู้ใช้ถูกเปลี่ยนเส้นทางกล่าวว่าพวกเขาคลิกที่ลิงค์ไป/section/index.html
เราต้องการให้คำขอที่นำไปสู่การเปลี่ยนเส้นทาง
http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
และอีกครั้งยังคงรักษา URL เดิม
ความพยายามของเราเกี่ยวข้องกับการแก้ปัญหาต่าง ๆ โดยใช้พร็อกซีและกฎการเขียนซ้ำและด้านล่างแสดงการกำหนดค่าที่ทำให้เราใกล้เคียงกับโซลูชันมากที่สุด (โปรดทราบว่านี่คือการกำหนดค่าเว็บเซิร์ฟเวอร์สำหรับexample.com
เว็บเซิร์ฟเวอร์) อย่างไรก็ตามยังมีปัญหาสองข้อสำหรับสิ่งนี้:
- มันไม่ได้เขียนใหม่อย่างถูกต้องในที่ URL คำขอที่ได้รับจากเว็บเซิร์ฟเวอร์
http://192.168.1.24
รวมถึง/some/path
และดังนั้นจึงไม่สามารถให้บริการหน้าที่จำเป็น เมื่อคุณวางบนลิงค์เมื่อเพจได้รับการบริการ
/some/path
หายไปจาก URLserver { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index index.html; root /var/www/example.com/htdocs; } }
เรากำลังมองหาโซลูชันที่เกี่ยวข้องกับการเปลี่ยนการกำหนดค่าเว็บเซิร์ฟเวอร์example.com
เท่านั้น เราสามารถเปลี่ยนการตั้งค่า192.168.1.24
(เช่น Nginx) แต่เราต้องการลองและหลีกเลี่ยงสิ่งนี้เพราะเราจะต้องทำซ้ำการตั้งค่านี้สำหรับเซิร์ฟเวอร์ที่แตกต่างกันหลายร้อยแห่งที่มีการเข้าถึงผ่านพร็อกexample.com
ซี