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.