302 অ্যাপ সার্ভারকে পুনরায় লিখন মাঝখানে অ্যাপাচি প্রক্সি দিয়ে URL গুলি পুনঃনির্দেশ করুন


8

আমার একটি বিজোড় সেটআপ আছে। দেখে মনে হচ্ছে:

Browser ----------> HTTPs Proxy ------> Apache HTTP -----> Tomcat AJP
           HTTPS                 HTTP                AJP

এইচটিটিপিএস প্রক্সিতে (একটি খুব বোবা প্রক্সি) একটি ইউআরএল https: //proxy.domain.com/app এর মতো দেখতে আসে। এরপরে এটি HTTP: //apache.domain.com/app (হোস্ট প্রক্সি.ডোমেন.কম.তে পাস করা) হিসাবে HTTP ব্যবহার করে অ্যাপাচিতে টানেল করা হয়। অ্যাপাচি তারপরে স্থানীয়ভাবে এজেপি প্রোটোকলটি এজেপি: // লোকালহোস্ট: 8009 / অ্যাপ / তে সুরক্ষিত করে অনুরোধটি সুড়ঙ্গ করে।

কখনও কখনও অ্যাপ্লিকেশন সার্ভারটি অনুরোধ করা পথটি পুনর্নির্দেশ করতে চায়। উদাহরণস্বরূপ, / অ্যাপ্লিকেশন / থেকে / অ্যাপ্লিকেশন / ওয়েবঅ্যাপ পুনঃনির্দেশ করুন। সুতরাং, এটি 302 ফেরত পাঠিয়ে অ্যাপাচে ফেরত পাঠিয়েছে - সম্ভবত এজেপি: // লোকালহোস্ট: 8009 / অ্যাপ / ওয়েব অ্যাপের মতো। অ্যাপাচি তারপরে পুনঃনির্দেশ URL টি http: //proxy.domain.com/app/webapp এ পুনর্লিখন করে। এইচটিটিপিএস প্রক্সি বোবা, তাই এটি পুনর্নির্দেশ বিশ্লেষণ করে HTTP কে https এ পরিবর্তন করে না।

সুতরাং, আমি নির্ধারণ করতে চাই যে আমি https- এ ব্যবহারকারী পাঠানোর জন্য 302 পুনর্নির্দেশ URL টি পুনরায় লিখতে অ্যাপাচি কনফিগার করতে পারি কিনা।

অ্যাপাচি এর https.conf এ আমার এতক্ষণের কনফিগারেশনটি এখানে রয়েছে:

ProxyPreserveHost       on
RewriteEngine           on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app

আমি প্রক্সিপাসরয়েভার্স ব্যবহার করার চেষ্টা করেছি , তবে কীভাবে এটি HTTP এর পরিবর্তে https এর মাধ্যমে 302 পুনর্নির্দেশ URL টি পুনরায় লিখতে বাধ্য করা যায় তা নির্ধারণ করতে সক্ষম হইনি।

কোন চিন্তা?

উত্তর:


9

আমি সবসময় একটি সমস্যা ছেড়ে দেওয়ার এবং পোস্ট দেওয়ার আগে কয়েক ঘন্টা ধরে সমস্যা নিয়ে কুস্তি করি - পোস্ট করার কয়েক মিনিটের পরে কেবল নিজের সমস্যাটি সমাধান করার জন্য ...

যারা আগ্রহী জন্য, সমাধান না ব্যবহার করতে ProxyPassReverse , বরং ব্যবহার করতে শিরোলেখ এটা বিদেশগামী হেডার সাথে আপনি জগাখিচুড়ি দিন '- ডিরেক্টিভের। এই ক্ষেত্রে, আমি অবস্থানের প্রতিক্রিয়া শিরোনামটি ক্যাপচার করতে এবং URL এর প্রোটোকলটি ঠিক করার জন্য এটিতে একটি রেজেেক্স চালাতে পারি:

ProxyPreserveHost       on
RewriteEngine           on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app
Header edit Location ^http(\:\/\/proxy.*)$ https$1

ভাল খবর!

যদি অ্যাপাচি অভিযোগ করে, এটি হতে পারে যে Mod_headers এখনও সক্ষম নয়: a2enmod headers


শিরোনামগুলি সম্পাদনা করার দরকার নেই, টমক্যাটকে রিম্পটআইপিভালভের মাধ্যমে এলবি / আরপ্রোক্সি প্রোটোকল সম্পর্কে জেনে রাখার জন্য @ ওয়ানডি সলিউশনের জন্য যান
মুহাম্মদ হেউডি

আমি এই সমাধানটি ব্যবহার করেছি। টমকাট তৈরির চেয়ে আমি কিছু কিছু অ্যাপাচি কনফিগার করা পছন্দ করি যা আমি চাই!
ফ্রোডেরিক

3

আমি অন্য একটি বিকল্প খুঁজে পেয়েছি।

Https://stackoverflow.com/questions/5741210/handling-x-forwarded-proto-in-java-apache-tomcat এবং অ্যাপাচি রিভার্সপ্রক্সিপাস https- র পরিবর্তে HTTP- র পুনর্নির্দেশের উপর ভিত্তি করে মনে হচ্ছে কিছু সার্ভার এক্স-ফরওয়ার্ড-প্রোটোকল শিরোনামকে স্বীকৃতি দিয়েছে । টমক্যাট যুক্ত করে এটি সনাক্ত করতে পারে:

<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="x-forwarded-protocol" />

to server.xml


1
এটি সর্বোত্তম সমাধান, সুতরাং
টমক্যাটটি

আমার মনে হয় তুমি বোঝাতে চাইছ X-Forwarded-Proto
মাইকেল হ্যাম্পটন

আমি নিশ্চিত যে আমি "প্রোটোকল" ব্যবহার করেছি এবং এটি কার্যকর হয়েছে। তবে এটি ছিল মার্চ ২০১৩। আমি দেখতে পাচ্ছি উভয় সংস্করণ কিছু সময়ের জন্য ব্যবহৃত হয়েছে। আমি এর মধ্যে দেখতে পাচ্ছি একটি নতুন আরএফসি 7239 লেখা হয়েছে (জুন 2014)। সম্ভবত "প্রোটো" সংস্করণটি জিতেছে এবং এখন এটি প্রমিত।
wodny
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.