nginx ย้อนกลับหัวข้อที่กำหนดเอง


13

ฉันมีตัวอย่างต่อไปนี้

           location / {
                    proxy_read_timeout 2000;
                    proxy_next_upstream error;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $http_host;
                    proxy_pass_header X_CUSTOM_HEADER;
                    proxy_redirect off;
                    proxy_max_temp_file_size 0;
                    proxy_pass https://prod;
                    break;
            }

ตอนนี้เมื่อฉันใช้สายขดต่อไปนี้

curl --head -H "X_CUSTOM_HEADER: foo" http://domain.com/api/test

ตอนนี้ไม่ทำงาน .. apache / php บนแบ็กเอนด์ไม่เห็นส่วนหัว ถ้าฉันข้าม nginx มันใช้งานได้

curl --head -H "X_CUSTOM_HEADER: foo" http://web1.domain.com/api/test

คำตอบ:


15

คุณควรใช้underscores_in_headers onคำสั่งที่ปิดโดยปริยาย


ข้อมูลนี้ช่วยฉันชั่วโมง
มอร์แกนเฉิง

ฉันยินดีที่จะซื้อเครื่องดื่มสดชื่นให้คุณ
ballmw

คุณครับคุณเป็นนักวิชาการและสุภาพบุรุษ
อีฟฟรีแมน

2

คุณควรใช้proxy_set_headerสำหรับส่วนหัวทั้งหมดที่คุณต้องการส่งต่อไปยังเซิร์ฟเวอร์เบื้องหลัง ดังนั้นแทนที่จะเป็นproxy_pass_header ...บรรทัด:

proxy_set_header X_CUSTOM_HEADER $http_x_custom_header;

ฉันได้ลองแล้วและมันไม่ได้ตั้งค่าส่วนหัวอย่างถูกต้องหากฉันแทนที่ $ http_x_custom_header ด้วย "foo" มันใช้งานได้
Mike

ฉันไม่แน่ใจว่าทำไมมันถึงใช้งานไม่ได้กับ @Mike แต่มันใช้งานได้สำหรับฉัน ฉันใช้ X-Forwarded-Proto กับ $ http_x_forwarded_proto
Tyler Collier

2

proxy_pass_headerดังกล่าวข้างต้นไม่ได้ผลสำหรับฉันทั้งดังนั้นผมจึงใช้ ดู Nginx วิกิพีเดียเกี่ยวกับ proxy_pass_header ที่นี่

หากส่วนหัวที่กำหนดเองของคุณถูกdevice_idเพิ่มproxy_pass_header device_id;ไปยังบล็อกพร็อกซีของคุณ

หากคุณใช้ Customheaders ที่มีเครื่องหมายขีดเส้นใต้อยู่ (เช่นฉัน) ให้แน่ใจว่าคุณมีunderscores_in_headers onNginx Config


ขอบคุณมาก ! ฉันดึงผมออกมา .... โพสต์ของคุณทำให้ฉันโล่งใจ ....
Fahad Ahammed

1

โดยค่าเริ่มต้น nginx ส่งต่อทั้งหมด ( proxy_pass_request_headers on; ) ส่วนหัวไปยังเซิร์ฟเวอร์ด้านหลัง แต่ถ้าส่วนหัวคำขอของคุณ (อาจเป็นส่วนหัวที่กำหนดเอง) รวมถึงขีดล่าง (_) ในชื่อส่วนหัวแล้ว nginx บล็อกส่วนหัวเหล่านั้น

Ex: authenticate_type, cdn_enable.

หากต้องการเปิดใช้งาน Nginx ให้ส่งส่วนหัวที่ร้องขอทั้งหมดหรือแบบกำหนดเองไปยังส่วนแบ็คเอนด์ให้เปิดตัวเลือกขีดล่าง

underscores_in_headers on;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.