বিপরীত প্রক্সি দিয়ে কীভাবে আপেক্ষিক ইউআরএলগুলি সঠিকভাবে পরিচালনা করবেন


51

অ্যাপাচে নীচে আমার বিপরীত প্রক্সি সেটআপ রয়েছে:

Www.example.com/folder ঠিকানা সহ সার্ভার এ হ'ল বিপরীত প্রক্সি সার্ভার।

এটি মানচিত্রে: সার্ভার বি ঠিকানা সহ টেস্ট.মেডআপুরাল.কম

এই ধরনের কাজ। তবে আমার যে সমস্যাটি রয়েছে তা হল, www.example.com/folder- এ, সম্পর্কিত সমস্ত লিঙ্কগুলি www.example.com/folder/css/examplefilename এর পরিবর্তে www.example.com/css/examplefilename.css ফর্মের। CSS

আমি কিভাবে এটা ঠিক করব?

এখনও পর্যন্ত আমার বিপরীত প্রক্সিটি সার্ভার এ (www.example.com) এ রয়েছে:

<Location /folder>
    ProxyPass  http://test.madeupurl.com
    ProxyPassReverse http://test.madeupurl.com
</Location>

নীচের সমাধানগুলির মধ্যে কোনটি আপনার জন্য এইচবি ব্রাইজন এর উত্তরে কাজ করেছিল, যদি মনে থাকে?
কিম্বার্লি ডাব্লু

উত্তর:


81

অ্যাপাচি প্রক্সিপাস রাইরাইটটি http://test.example.com থেকে প্রাপ্ত প্রতিক্রিয়া সংস্থাগুলি পুনর্লিখন করে না , কেবল শিরোনাম (যেমন একটি 404 পৃষ্ঠাতে পুনঃনির্দেশকরণ এবং এ জাতীয়)।

বেশ কয়েকটি বিকল্প:

এক ) পরম পরিবর্তে আপেক্ষিক পাথ ব্যবহার করতে অভ্যন্তরীণ অ্যাপ্লিকেশনটি পুনরায় লিখুন। অর্থাত্ ../css/style.cssপরিবর্তে/css/style.css

দুই ) অভ্যন্তরীণ অ্যাপ্লিকেশনটিকে test.example.com /folderএর মূলের পরিবর্তে একই উপ-ডিরেক্টরিতে পুনরায় চালু করুন ।

তিন ) এক এবং দুটি প্রায়শই ঘটে যাওয়ার সম্ভাবনা থাকে না ... আপনি যদি ভাগ্যবান হন তবে অভ্যন্তরীণ অ্যাপ্লিকেশনটি কেবল দুটি বা তিনটি উপ-ডিরেক্টরি ব্যবহার করে এবং সেগুলি আপনার মূল সাইটে অব্যবহৃত থাকলে কেবল প্রক্সিপাস লাইনের একটি গুচ্ছটি লিখুন:

# Expose Internal App to the internet.
ProxyPass /externalpath/  http://test.example.com/
ProxyPassReverse /externalpath/  http://test.example.com/
# Internal app uses a bunch of absolute paths. 
ProxyPass /css/  http://test.example.com/css/
ProxyPassReverse /css/  http://test.example.com/css/
ProxyPass /icons/  http://test.example.com/icons/
ProxyPassReverse /icons/  http://test.example.com/icons/

চার ) অভ্যন্তরীণ অ্যাপ্লিকেশনের জন্য একটি পৃথক সাবডোমেন তৈরি করুন এবং কেবল প্রক্সি সবকিছু উল্টো করুন:

<VirtualHost *:80>
   ServerName app.example.com/
   # Expose Internal App to the internet.
   ProxyPass /  http://test.internal.example.com/
   ProxyPassReverse /  http://test.internal.example.com/
</VirtualHost>

পাঁচ ) কখনও কখনও ডেভেলপারদের সম্পূর্ণরূপে clueless এবং তাদের অ্যাপ্লিকেশনগুলি না শুধুমাত্র পরম URL- এর উৎপন্ন কিন্তু এমনকি তাদের URL- এর মধ্যে হোস্টনাম অংশ এবং তার ফলে HTML কোড ভালো দেখায় অন্তর্ভুক্ত আছে: <img src=http://test.example.com/icons/logo.png>

) আপনি বিভক্ত দিগন্ত ডিএনএস এবং দৃশ্যের কম্বো সমাধান ব্যবহার করতে পারেন 4.. অভ্যন্তরীণ এবং বহিরাগত উভয়ই পরীক্ষক পরীক্ষা করে দেখুন .com বাহ্যিক ব্যবহারকারীর জন্য test.example.com এর সর্বজনীন রেকর্ডটি আপনার সার্বজনীন ওয়েবসারভার www.example.com এর আইপি-ঠিকানার দিকে নির্দেশ করে এবং তারপরে আপনি সমাধান 4 ব্যবহার করতে পারেন।

) আপনি কেবল টেস্ট.এক্সামেল ডটকমের প্রক্সি অনুরোধগুলিতে না হয়ে আসলে অ্যাপাচি পেতে পারেন, তবে এটি আপনার ব্যবহারকারীদের কাছে সঞ্চারিত হওয়ার আগে প্রতিক্রিয়া বডিটি আবারও লিখতে পারে। (সাধারণত কোনও প্রক্সি কেবল এইচটিটিপি শিরোনাম / প্রতিক্রিয়াগুলিকেই পুনরায় লেখায়)। Mod_subst متبادل অ্যাপাচি ২.২। এটি মোড_প্রক্সির সাথে ভাল স্ট্যাক হলে আমি পরীক্ষা করিনি, তবে সম্ভবত নিম্নলিখিতটি কাজ করে:

<Location /folder/>
  ProxyPass http://test.example.com/
  ProxyPassReverse http://test.example.com/ 
  AddOutputFilterByType SUBSTITUTE text/html
  Substitute "s|test.example.com/|www.example.com/folder/|i" 
</Location>

4
পবিত্র গরু ভাল উত্তর। এমনকি এগুলির কোনও চেষ্টাও করেনি এখনও লেখার জন্য ধন্যবাদ বলতে চেয়েছিলেন! এক মিলিয়ন সাহায্য করে। এই ধারণাগুলির কয়েকটি এখনই পরীক্ষা করতে যাচ্ছি এবং শীঘ্রই প্রতিবেদন করবে :)
কঠোর কর্মী

দ্রুত প্রশ্ন করুন, পয়েন্ট 2 এর জন্য যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি স্যার আপনি পরামর্শ দিচ্ছেন যে আমি টেস্ট.মেডআপুরল.com/ ফোল্ডারে অ্যাডপ্পটি পুনরায় প্রচার করব? এটির জন্য কি আমার অ্যাপাচি কনফিগারেশন ফাইলটিতে কোনও পরিবর্তন দরকার? এটি দ্রুততম সমাধানের মতো দেখায়
কঠোর পরিশ্রমী

অতিরিক্তভাবে, আপনাকে বিরক্ত করার জন্য দুঃখিত তবে 1 পয়েন্টের সাথে আমি যখন আমার প্রশ্নের বিবরণ দিয়ে আমার সমস্যার সমাধানের সমস্যাটি স্থির করে থাকি তখনও চেষ্টা করি। উদাহরণস্বরূপ আমি এখানে ব্যবহার করেছি: <লিঙ্ক rel = "স্টাইলশিট" টাইপ = "পাঠ্য / সিএসএস" href = "../ সিএসএস / কাস্টম। /css/bootstrap.css বদলে test.madeupurl.com/folder/css/bootstrap.css । এ সম্পর্কে আপনার কোনও পরামর্শ থাকলে তা সবচেয়ে সহায়ক হবে
কঠোর কর্মী

প্রায়শই যখন আপনি যে এখন মত একটি সাব থেকে DocumentRoot ইনস্টল থাকা অ্যাপ্লিকেশনের পুনঃসংস্থাপন / স্টাইলশীট ফোল্ডার আইকন ইত্যাদি / ফোল্ডার / CSS এবং / ফোল্ডার / আইকন মোতায়েন হবে, ইত্যাদি তারপর এইচটিএমএল আউটপুটে লিঙ্ক হয়ে যাবে মত <img src=/folder/icons/button.png>যা পালা ProxyPass /folder/ http://test.madeupurl.com/folder/নির্দেশ দ্বারা ধরা হবে ।
এইচবিউইজন

পরীক্ষা.মেডিউপুরল / কনটেন্ট / ইন্ডেক্স এইচটিএমএল পৃষ্ঠাটি টেস্ট.মেডিউপুরল / সিএসএস / কাস্টম সিএসএস অন্তর্ভুক্ত করতে চায়। এই অবস্থানে আপনার আপেক্ষিক ইউআরএল ব্যবহার করা উচিত href="../css/custom.css"এবং না href="/css/custom.css"। ইন্টারনেট ব্যবহারকারী পৃষ্ঠাটি পুনরুদ্ধার করার সময় URL টি হবে www.example.com/folder/content/index.html। সিএসএসের জন্য ইউআরএলটি তখন হবে: www.example.com/folder/content/../css/custom.cssএটি আসলে www.example.com/folder/css/custom.cssযা আগে পাঠানো হবে test.madeupurl.com/css/custom.css
এইচবিউইজন

8

করার জন্য একটি সম্পূরক হিসেবে HBruijn এর উত্তর, যদি আপনি সমাধানের জন্য মনোনীত করা (3) "ProxyPass", আপনি ব্যবহার করতে হতে পারে mod_proxy_html আপনার HTML পাতায় কিছু URL পুনর্লিখন।

cf. কিছু উদাহরণের জন্য বিপরীত প্রক্সি দিয়ে কীভাবে আপেক্ষিক ইউআরএলগুলি সঠিকভাবে পরিচালনা করবেন।

প্রয়োগকৃত উদাহরণ হিসাবে, এখানে আপনি কীভাবে আপনার-domain-name.com/pad-ProxyHTMLURLMap এ স্থানীয়ভাবে চলমান আপনার ইথারপ্যাড ইনসেন্টে 9001 পোর্টে সমস্ত কিছু ফরোয়ার্ড করার নিয়মটি ব্যবহার করে অ্যাপাচি কনফিগার করতে পারেন :

<Location /pad> ProxyPass http://localhost:9001 retry=0 # retry=0 => avoid 503's when restarting etherpad-lite ProxyPassReverse http://localhost:9001 SetOutputFilter proxy-html ProxyHTMLURLMap http://localhost:9001 </Location> RewriteRule ^/pad$ /pad/ [R]


2
যদিও সচেতন হন যে mod_proxy_html কেবলমাত্র অ্যাপাচি ২.৪ এবং তার থেকে উপরে অন্তর্ভুক্ত করা হয়েছে, যেখানে উপরের মূল প্রশ্নটি অ্যাপাচি ২.২

আপনার উত্তর অনবদ্য। যাইহোক, আমি এমন একটি ক্ষেত্রে সাক্ষাত করেছি যেখানে লিখিত সামগ্রীটি এইচটিএমএল নয়, এটি পিডিএফ। প্রক্সিএইচটিএমএল URL ম্যাপ ব্যবহার করা আমার পক্ষে কার্যকর হয়নি। অন্য কোন পরামর্শ?
মোহাম্মদ এন্নাহাদি এল ইদ্রিসি

2
যদি আপনার বিষয়বস্তু পিডিএফ হয় তবে আপনাকে এতে ইউআরএলগুলি পুনরায় লেখার দরকার নেই! আপনি না চাইলে আপনার ব্যবহারকারীরা আপনার ওয়েবসাইটের অন্যান্য পৃষ্ঠাগুলি অ্যাক্সেস করার জন্য পিডিএফ-এর লিঙ্কগুলিতে ক্লিক করুন, তবে এটি জটিল sounds ইউআরএল পুনর্লিখন নিষ্ক্রিয় করতে, কেবল শেষ 2 নির্দেশ বাদ দিন: SetOutputFilter& ProxyHTMLURLMap
লুকাস সিমন

এনকোডিংয়ের ত্রুটিগুলি এড়ানোর জন্য আপনাকে অনুরোধহীডার আনসেট অ্যাসোসিয়েট-এনকোডিং যুক্ত করার প্রয়োজন হতে পারে
zar3bski

5

বিপরীত প্রক্সি তৈরি করার জন্য আপনি নিম্নলিখিত
উপায়গুলি ব্যবহার করতে পারেন: 1. মোড_প্রক্সি_এইচটিএমএল ইনস্টল করুন

    yum install mod_proxy_html
  1. মোড_প্রক্সি_এইচটিএমএল মডিউল লোড করুন

    LoadModule proxy_html_module modules/mod_proxy_html.so
    
  2. এবং নিম্নলিখিত সেটিংস ব্যবহার করুন

    ProxyRequests off  
    ProxyPass /folder/  http://test.madeupurl.com  
    ProxyHTMLURLMap http://test.madeupurl.com  /folder  
    
    <Location /folder/>  
        ProxyPassReverse /  
        ProxyHTMLEnable On  
        ProxyHTMLURLMap  /  /folder/  
        RequestHeader    unset  Accept-Encoding  
    </Location>  
    

এই সাহায্য আশা করি।

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