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

এখন এটি কাজ করে না .. ব্যাকএন্ডে অ্যাপাচি / পিএইচপি হেডারটি দেখতে পাচ্ছে না। যদি আমি এনজিঙ্কসকে বাইপাস করি তবে এটি কাজ করে

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

উত্তর:


15

আপনার underscores_in_headers onনির্দেশিকা ব্যবহার করা উচিত যা ডিফল্টরূপে বন্ধ।


এই তথ্যটি আমাকে ঘন্টা বাঁচায়।
মরগান চেং

আমি আনন্দের সাথে আপনাকে একটি সতেজ পানীয় কিনে দেব।
বল্মডুব

আপনি স্যার, একজন আলেম এবং ভদ্রলোক।
ইভ ফ্রিম্যান

2

আপনি proxy_set_headerব্যাকএন্ড সার্ভারগুলিতে ফরোয়ার্ড করতে চান এমন সমস্ত শিরোলেখ ব্যবহার করা উচিত । proxy_pass_header ...লাইনের পরিবর্তে :

proxy_set_header X_CUSTOM_HEADER $http_x_custom_header;

আমি এটি চেষ্টা করেছি এবং এটি শিরোনামটি সঠিকভাবে সেট করে না, আমি যদি "foo" এর সাথে $ http_x_custom_header প্রতিস্থাপন করি তবে এটি কার্যকর হয়
মাইক

আমি নিশ্চিত নই কেন এটি @ মাইকের পক্ষে কাজ করে নি তবে এটি আমার পক্ষে কার্যকর হয়েছে। আমি For http_x_ ফরওয়ার্ড_প্রোটো দিয়ে এক্স-ফরওয়ার্ড-প্রোটো ব্যবহার করছি।
টাইলার কলিয়ার

2

উপরেরটি আমার পক্ষে কাজ করে না তাই আমি ব্যবহার করেছি proxy_pass_headerপ্রক্সি_পাস_হেডার সম্পর্কে এনগিনেক্স উইকি দেখুন ।

যদি আপনার কাস্টম হেডার হয় device_idযোগ proxy_pass_header device_id;আপনার প্রক্সি ব্লক করতে।

যদি আপনি এটিতে আন্ডারস্কোর সহ কাস্টমহেডারগুলি ব্যবহার করছেন (যেমন আমি আছি) underscores_in_headers onআপনার এনগিনেক্স কনফিগারেশনে নিশ্চিত হয়েছেন তা নিশ্চিত হন ।


অনেক ধন্যবাদ ! আমি আমার চুলগুলি টেনে আনছিলাম .... আপনার পোস্টটি আমাকে মুক্তি দিয়েছে ....
ফাহাদ আহমাদ

1

ডিফল্টরূপে nginx ব্যাকএন্ড সার্ভারে সমস্ত ( প্রক্সি_পাস_প্রভেস্ট_হেডারগুলি; ) ফরোয়ার্ড করে । তবে যদি আপনার অনুরোধ শিরোনাম (কাস্টম শিরোনাম হতে পারে) শিরোনামের নামটিতে আন্ডারস্কোর (_) অন্তর্ভুক্ত করে তবে এনজিনেক্স সেগুলি শিরোনামকে অবরুদ্ধ করে।

Ex: authenticate_type, cdn_enable.

Nginx সমস্ত বা কাস্টম অনুরোধ শিরোনাম ব্যাকএন্ডে পাস করার জন্য সক্ষম করতে নীচে আন্ডারস্কোর বিকল্পটি চালু করুন।

underscores_in_headers on;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.