অনুরোধহাইডার অ্যাপাচি এনভায়রনমেন্ট ভেরিয়েবলের সাথে


13

আমি লোপা ব্যালেন্সার হিসাবে অ্যাপাচি সেট আপ করেছি। আমি অ্যাপাচি এক্স-ফরওয়ার্ড-প্রোটো শিরোনাম সেট করতে চেয়েছিলাম, তবে এটি কার্যকর হয় না:

RequestHeader set X-Forwarded-Proto "%{SERVER_PROTOCOL}e"

শিরোনাম নালায় সেট হয়ে যায়। কোন ধারণা কেন?

উত্তর:


15

দেরীতে হলেও এখনও, আমি একই সমস্যাটি মোকাবিলা করেছি এবং এটি আমার পক্ষে কাজ করেছে:

RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS

ডকুমেন্টেশন বলেছেন:

যখন অনুরোধহাইডার নির্দেশটি যুক্ত, যুক্ত বা সেট আর্গুমেন্টের সাথে ব্যবহার করা হয়, তখন একটি চতুর্থ যুক্তি শর্ত নির্দিষ্ট করার জন্য ব্যবহার করা যেতে পারে যার অধীনে এই পদক্ষেপ নেওয়া হবে। যদি env = ... আর্গুমেন্টে উল্লিখিত পরিবেশের পরিবর্তনশীল উপস্থিত থাকে (বা যদি পরিবেশের ভেরিয়েবলটি উপস্থিত না থাকে এবং env =! ... নির্দিষ্ট করা থাকে) তবে অনুরোধহাইডার নির্দেশের দ্বারা নির্দিষ্ট করা কার্য কার্যকর হবে। অন্যথায়, নির্দেশের অনুরোধটির কোনও প্রভাব পড়বে না।

এইচটিটিপিএস এনভায়রনমেন্ট ভেরিয়েবল কেবল তখনই সেট করা থাকে যখন এসএসএলের মাধ্যমে অনুরোধ করা হয়।


3
মতে en.wikipedia.org/wiki/List_of_HTTP_header_fields হেডার আন্ডারস্কোর বদলে হাইফেন থাকতে হবে: RequestHeader সেট এক্স-ফরোয়ার্ড করা-প্রোটো 'HTTPS' env = HTTPS দ্বারা এটাও হেডার আমাজনের ELB পাঠানো হয়।
loevborg

9

আপনি তা চান না; এটি আপনার শিরোনামটি "HTTP / 1.1" তে সেট করবে (এমনকি একটি https অনুরোধেও) - আপনি যা যা করছেন সম্ভবত এটি মারাত্মকভাবে কার্যকর নয়।

আপনার কাছে http এবং https এর জন্য বিভিন্ন ভার্চুয়ালহস্ট ব্লক রয়েছে; RequestHeaderপ্রতিটি মধ্যে হার্ডকোড সেটিংস।

<VirtualHost *:80>
    RequestHeader set X-Forwarded-Proto "http"
    ...
</VirtualHost>

<VirtualHost *:443>
    RequestHeader set X-Forwarded-Proto "https"
    ...
</VirtualHost>

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

3

আপনি earlyকীওয়ার্ড ব্যবহার করে এটি ঠিক করতে পারেন :

RequestHeader set X-Forwarded-Proto "https" early

অন্যথায়, আপনি জন ক্রেনশোর পরামর্শ অনুযায়ী যা করতে পারেন, যা নির্দেশের RewriteRuleপরিবর্তে ব্যবহার করা হয় ProxyPass


1
অ্যাপাচি আসলে এই হেডারটি পাঠাচ্ছে কিনা তা আমি কীভাবে ডিবাগ করতে পারি?
কোডেকবয়

2

কারণ খুঁজে পেয়েছি। দেখা যাচ্ছে এটি অপারেশন ইস্যুর একটি ক্রম। মোড_উইরাইট এই এনভায়রনমেন্ট ভেরিয়েবলগুলি সরবরাহের জন্য দায়বদ্ধ তবে অ্যাপাচি কোনও প্রক্সিপাস অনুরোধ হ্যান্ডেল না করা পর্যন্ত এটি প্রক্রিয়া করে না। ততক্ষণে, এটি কেবল বাতিল হয়ে যাবে। মোড_উইরাইটের মাধ্যমে কেবলমাত্র প্রক্সিই করা উচিত।

Http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160 দেখুন

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