Nginx বিপরীত প্রক্সি থেকে ফরোয়ার্ড কাস্টম শিরোনাম


25

অতিরিক্ত হ্যান্ডলিংয়ের জন্য অ্যাপাচে অনুরোধ পাঠানোর জন্য আমার একটি এনগিনেক্স ওয়েব সার্ভার বিপরীত প্রক্সি হিসাবে কাজ করছে (আমি আপনাকে অনুরোধ করছি কেন তা জিজ্ঞাসা করবেন না)। আমার একটি অনুরোধ আছে যার সাথে আমি একটি কাস্টম শিরোলেখ সংযুক্ত করার চেষ্টা করছি এবং আমি এনগিনেক্সের পক্ষে সেই কাস্টম শিরোনামটি অ্যাপাচি-এর সাথে ফরোয়ার্ড করতে চাই যাতে আমি এটিতে একটি অ্যাপ্লিকেশনে কিছু করতে পারি।

আমি ডক্সটি দেখেছি HttpProxyModule, তবে আমি সঠিক জায়গায় থাকলেও এগুলি খুব বর্ণনামূলক নয় (এটি খুব ভালভাবে হতে পারে যে আমি নই)।

আমি কীভাবে একটি X-CUSTOM-REFERRERশিরোনাম ফরোয়ার্ড করতে এনজিঙ্ক্স পেতে পারি ? তদতিরিক্ত, যদি সম্ভব হয় তবে আমি এটির যে কোনও কাস্টম শিরোলেখাকে এগিয়ে নিয়ে যেতে চাই । যদি পরবর্তীটি জিজ্ঞাসা করতে খুব বেশি হয় তবে প্রাক্তনটি আমার বর্তমান প্রয়োজনের জন্য যথেষ্ট।

আপনি দেখতে পাচ্ছেন, আমি এনজিএনএক্সে খুব নতুন, তাই প্রতিকারের সংস্করণটি সহায়ক হবে।

ধন্যবাদ।

হালনাগাদ

আমার বিদ্যমান কনফিগারেশন থেকে সম্পর্কিত স্নিপেট:

location / {
    proxy_pass                  http://preview;
    proxy_redirect              off;
    proxy_set_header            Host $host;
    proxy_set_header            X-Real-IP $remote_addr;
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    # proxy_set_header            X-Custom-Referrer $x_custom_referrer;
}

উত্তর:


20

proxy_set_headerথেকে নির্দেশ HttpProxyModule আপনি এই কাজ করতে পারেন। উদাহরণ স্বরূপ:

proxy_pass http://apachehost;
proxy_set_header X-Custom-Referrer $proxy_add_<header_field_name_from_last_request>;

1
ধন্যবাদ, @ এমগোর্ভেন যদিও আগত মান পরিবর্তনশীল। আমি কি আগত X-Custom-Referrerহেডার থেকে একটি মান পড়তে পারি এবং এটি পাশ দিয়ে দিতে পারি? proxy_set_header X-Custom-Referrer $x_custom_referrerবা এই প্রভাব কিছু?
রব উইলকারসন

1
হ্যাঁ, আপনি ব্যবহার করতে পারেন $http_x_custom_referrer। যাইহোক, ক্লায়েন্ট দ্বারা প্রেরিত সমস্ত শিরোনাম স্বয়ংক্রিয়ভাবে ব্যাকএন্ডে প্রেরণ করা উচিত। আপনি proxy_pass_request_headers offকোথাও সেট করেছেন ?
ম্যাগগ্রোভেন

আমি দেখতে পাচ্ছি না। আমি আমার কনফিগার ফাইল থেকে একটি স্নিপেট দিয়ে আমার প্রশ্ন আপডেট করেছি। যদিও এই শিরোনামটি অবশ্যই অ্যাপটিতে তা তৈরি করছে না। এটি বলেছিল, আমি ধরণের অনুমান করছি যে উত্স অ্যাপ্লিকেশনগুলি এটি পাঠাচ্ছে, তাই আমি আমার যথাসাধ্য চেষ্টা করব এবং নিশ্চিত হয়ে থাকি এটি ডিফল্ট আচরণ কিনা।
রব উইলকসন

আপনার স্নিপেটে @ রবওয়িলারসন প্রাসঙ্গিক proxy_set_headerমন্তব্য করা হয়েছে; এছাড়াও আপনি ... এর $x_custom_referrerপরিবর্তে ব্যবহার করছেন$http_x_custom_referrer
severin

আমি মনে করি @ মিগ্রোগরভেনের উত্তরটি $http_<custom_header_field>পরিবর্তে আপডেট করা উচিত$proxy_add_<custom_header_field>
ট্রাই নগুইন

2

Ngx_headers_more মডিউলটি আপনাকে HTTP শিরোনাম পরিবর্তন এবং যুক্ত করতে দেয়।


এই মডিউলটি প্রতিক্রিয়াটিতে শিরোনাম যুক্ত করেছে। ওপি যা চাইছে তা নয়। এটিকে প্রবাহে একটি অতিরিক্ত হেডার পাঠাতে হবে proxy_pass
ভিক্টর শ্রড্ডার

1

আপনি আপ স্ট্রিম শিরোনাম (named http_ দিয়ে শুরু করা নাম) এবং অতিরিক্ত কাস্টম শিরোনাম ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

add_header X-Upstream-01 $http_x_upstream_01;
add_header X-Hdr-01  txt01;

এরপরে, কনসোলে যান এবং ব্যবহারকারীর শিরোলেখ দিয়ে অনুরোধ করুন:

curl -H "X-Upstream-01: HEADER1" -I http://localhost:11443/

প্রতিক্রিয়াতে এক্স-এইচডিআর -01 রয়েছে, যা সার্ভার দ্বারা সেট করা হয়েছে এবং এক্স-প্রবাহ -01, ক্লায়েন্ট দ্বারা নির্বাচিত:

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 30 Nov 2015 23:54:30 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
X-Hdr-01: txt01
X-Upstream-01: HEADER1

1
এটি প্রতিক্রিয়াটির উপর শিরোনাম স্থাপন করছে। ওপি একটি proxy_passনির্দেশকের উজানে প্রেরণে শিরোনাম সেট করতে চায় ।
ভিক্টর শ্রড্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.