นี่เป็นครั้งแรกที่ฉันใช้ nginx และฉันพบว่าสถานการณ์นี้ค่อนข้างน่างง เว็บไซต์ของฉันโฮสต์อยู่ที่ เว็บ.example.com
และเพื่อเข้าถึงแบ็กเอนด์ คำขอจะถูกส่งผ่าน nginx เป็นพร็อกซีย้อนกลับ หลังจากประมวลผลผ่าน nginx แล้ว URL จะเปลี่ยนเป็น URL ของเซิร์ฟเวอร์ nginx (proxy.example.com
) แทนที่จะเป็น URL ของเว็บไซต์
โฟลว์มีลักษณะดังนี้:
web.example.com -> nginx (proxy.example.com) -> แบ็กเอนด์ (service.example.com)
เมื่อฉันบันทึกคำขอในบริการแบ็กเอนด์ ฉันจะเห็นว่า x-forwarded-host ถูกตั้งค่าเป็น proxy.example.com
. ถูกต้องหรือควรตั้งค่าเป็น เว็บ.example.com
ที่นี่?
ไฟล์ nginx.conf คือ:
เหตุการณ์ {
worker_connections 1024;
}
http {
รวม /etc/nginx/mime.types;
แอปพลิเคชัน default_type/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $สถานะ'
'"$คำขอ" $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log บันทึก / access.log หลัก;
เซิร์ฟเวอร์ { # พร็อกซีย้อนกลับอย่างง่าย
ฟัง 80;
server_name proxy.example.com;
ที่ตั้ง / ไซต์ {
proxy_set_header โฮสต์ $http_host;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-host $host;
proxy_set_header x-forwarded-server $host;
proxy_set_header x-real-ip $remote_addr;
เปิด proxy_pass_request_headers;
proxy_pass http://service.example.com$request_uri;
}
}
}
ฉันจะรับ URL เพื่อกลับไปได้อย่างไร เว็บ.example.com/site
หลังจากผ่านกระแสนี้แทนที่จะแสดงเป็น proxy.example.com/site
?
ขอบคุณ.