Score:0

เว็บไซต์ใช้ URL ผิดหลังจาก proxing ผ่าน Nginx

ธง cn

นี่เป็นครั้งแรกที่ฉันใช้ 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?

ขอบคุณ.

Michael Hampton avatar
cz flag
การกำหนดค่านี้ดูถูกต้อง สิ่งที่คุณเห็นว่าเป็นปัญหาคืออะไร? เฉพาะเจาะจง.
cn flag
@MichaelHampton ปัญหาคือ URL ของพร็อกซีถูกเปิดเผย ทำไมถึงเกิดขึ้น? ฉันต้องการให้ URL ยังคงเป็น web.example.com
Michael Hampton avatar
cz flag
คุณหมายถึงอะไรกันแน่? คำอธิบายที่คลุมเครือนั้นไร้ประโยชน์
cn flag
URL ในแถบตำแหน่งของเบราว์เซอร์เปลี่ยนจาก web.example.com เป็น proxy.example.com เพื่อให้ผู้ใช้ปลายทางเห็น URL ของพร็อกซี ฉันไม่คิดว่ามันควรจะเกิดขึ้น
Michael Hampton avatar
cz flag
ตกลง ตอนนี้ฉันเข้าใจแล้ว นั่นไม่ได้เกิดจาก nginx; นั่นคือแบ็กเอนด์ของคุณ
cn flag
@MichaelHampton คุณพูดอะไรมากกว่านี้ได้ไหม? แบ็กเอนด์ของฉันจะเปลี่ยน URL ในแถบตำแหน่งได้อย่างไร
Michael Hampton avatar
cz flag
ไม่มีทางที่พวกเราจะรู้ได้ มันเป็นแบ็กเอนด์ของคุณและคุณไม่ได้พูดอะไรเลยว่ามันคืออะไร
cn flag
แบ็กเอนด์เป็นแอปพลิเคชันจาวาที่ทำงานบน Tomcat 9 ฉันกำลังบันทึกส่วนหัวที่เข้ามาในแอปพลิเคชันนั้น และดูส่วนหัว x-forward-* ที่ตั้งค่าเป็น `proxy.example.com`
Michael Hampton avatar
cz flag
ส่วนหัวอะไร? อีกครั้งให้เฉพาะเจาะจง
cn flag
x-forward-host และ x-forward-for ทั้งคู่ตั้งค่าเป็น proxy.example.com
Michael Hampton avatar
cz flag
ไม่สอดคล้องกับการกำหนดค่า nginx ที่คุณแสดง กองนี้มีอะไรอีกบ้าง? คราวนี้บอกเราทุกอย่างและอย่าทิ้งรายละเอียดที่เกี่ยวข้อง
cn flag
@MichaelHampton ใช่ ฉันได้เพิ่มส่วนหัวอีกเล็กน้อยในการดีบัก
ar flag
คุณช่วยอธิบายรายละเอียดเกี่ยวกับกองของคุณได้ไหม คุณบอกว่าคุณมีเว็บไซต์ที่ `web.example.com` และคุณใช้ nginx เป็นพร็อกซีย้อนกลับไปยัง `service.example.com` ดังนั้น เว็บของคุณจึงให้บริการโดยเซิร์ฟเวอร์ nginx และบริบท `/site` นั้นเป็นพร็อกซี ไปที่แบ็กเอนด์หรือคุณมีองค์ประกอบก่อนหน้าก่อนหน้า nginx นั้นหรือไม่ หากคุณไม่มี เหตุใดเซิร์ฟเวอร์ nginx จึงถูกเรียกภายในว่า `proxy.example.com` แทนที่จะเป็น `web.example.com`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา