ลองใช้การสนับสนุนพร็อกซีย้อนกลับแทน ตัวอย่างlocation
ส่วนจะเป็น:
location / {
proxy_pass http://localhost:8080;
proxy_redirect http://localhost:8080/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ตัวอย่างนี้จะผ่านการร้องขอทั้งหมดนี้บล็อกไปยังเซิร์ฟเวอร์ที่สองทำงานอยู่บนserver
localhost:8080
สิ่งนี้จะเก็บรักษาPOST
และควรรักษาประเภทคำขออื่น ๆ ด้วยหากเป็นปัญหา
ปัญหาคือการเปลี่ยนเส้นทางภายนอกจะไม่ส่งPOST
ข้อมูลอีกครั้ง สิ่งนี้เขียนไว้ในข้อมูลจำเพาะ HTTP (ตรวจสอบหัวข้อ 3xx) ลูกค้าที่ทำเช่นนี้จะละเมิดข้อกำหนด
หากได้รับรหัสสถานะ 301/302 เพื่อตอบสนองต่อคำขอนอกเหนือจาก GET หรือ HEAD ตัวแทนผู้ใช้จะต้องไม่เปลี่ยนเส้นทางคำขอโดยอัตโนมัติเว้นแต่จะได้รับการยืนยันจากผู้ใช้เนื่องจากอาจมีการเปลี่ยนแปลงเงื่อนไขภายใต้คำขอที่ออก .
ฉันค่อนข้างแน่ใจว่าเบราว์เซอร์ส่วนใหญ่ใช้สิ่งนี้โดยบังคับให้คำขอเปลี่ยนเส้นทางเป็นGET
คำขอ ตามหลักเหตุผลสเป็คจะอนุญาตให้เบราว์เซอร์ที่จะถามผู้ใช้ว่าจะเปลี่ยนเส้นทางPOST
ข้อมูลหรือไม่