আমি একটি কারাফ-হোস্টেড অ্যাপ্লিকেশন (অ্যাপাচি এবং কারাফ পৃথক সার্ভারে রয়েছে) এর সামনে অ্যাপাচি মোতায়েন করছি। আমি আপাচি বিপরীত প্রক্সি হিসাবে কাজ করতে এবং URL এর কিছু অংশ আড়াল করতে চাই।
অ্যাপ্লিকেশনটির লগ-ইন পৃষ্ঠাটি পেতে অ্যাপ্লিকেশন সার্ভার থেকে সরাসরি ইউআরএল http://app-server:8181/jellyfish
। পৃষ্ঠাগুলি জেটি উদাহরণ দ্বারা করাফের মধ্যে চলমান served অবশ্যই, এই আচরণটি ফায়ারওয়াল দ্বারা বিপরীত প্রক্সি সার্ভার বাদে সবকিছুর জন্যই অবরুদ্ধ হয়ে থাকে।
ফায়ারওয়াল বন্ধ হয়ে, আপনি যদি এই URL টি টিপান তবে জেটি লগ-ইন পৃষ্ঠাটি লোড করে। ব্রাউজারের ঠিকানা বারটি সঠিকভাবে পরিবর্তিত হয় http://app-server:8181/jellyfish/login?0
এবং সবকিছু কাজ করে।
আমি যা চাই তা হল http://web-server
(অর্থাত্ মূল থেকে) অ্যাপ্লিকেশন সার্ভারে জেটির কাছে ম্যাপ করা অ্যাপটির নাম সহ ( jellyfish
) চাপা দেওয়া। উদাহরণস্বরূপ ব্রাউজারটি http://web-server/login?0
ঠিকানা বারে দেখানোর জন্য পরিবর্তিত হবে এবং পরবর্তী সমস্ত ইউআরএল এবং সামগ্রী ওয়েব-সার্ভারের ডোমেনের সাথে এবং jellyfish
বিশৃঙ্খলা ছাড়াই পরিবেশন করা হবে ।
নীচের কনফিগারেশন (স্নিপেট) ব্যবহার করে আমি অ্যাপাচিকে একটি সাধারণ বিপরীত প্রক্সি হিসাবে পরিচালনা করতে পারি: -
ProxyPass /jellyfish http://app-server:8181/jellyfish
ProxyPassReverse / http://app-server:8181/
... তবে এর জন্য ব্রাউজারের ইউআরএল থাকা jellyfish
এবং মূল URL- এ যেতে http://web-server
একটি 404 পাওয়া যায় নি।
এটিকে ঘিরে ধরার জন্য আমি mod_rewrite
এর [P]
পতাকাটি ব্যবহার করে এবং ছাড়াই অনেক সময় ব্যয় করেছি , কিন্তু সাফল্য ছাড়াই। আমি তখন সেই ProxyPassMatch
নির্দেশটি চেষ্টা করেছিলাম , তবে আমিও এটি বেশ সঠিকভাবে পেতে পারি না।
/etc/apache2/sites-available/
ওয়েব সার্ভারে লোড হওয়ার সাথে সাথে বর্তমান কনফিগারেশনটি এখানে । মনে রাখবেন যে স্থানীয়ভাবে-হোস্ট করা ইমেজ ডিরেক্টরি রয়েছে। আমি মোড_উইরাইট প্রক্সিটি সুরক্ষা শোষণ করে রেখেছি এবং বেশ কয়েকটি mod_security
নিয়মকে দমন করছি যা মিথ্যা ইতিবাচক দিক দিয়েছিল।
<VirtualHost *:80>
ServerAdmin admin@drummer-server
ServerName drummer-server
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /images/ "/var/www/images/"
RewriteEngine On
RewriteCond %{REQUEST_URI} !^$
RewriteCond %{REQUEST_URI} !^/
RewriteRule .* - [R=400,L]
ProxyPass /images !
ProxyPassMatch ^/(.*) http://granny-server:8181/jellyfish/$1
ProxyPassReverse / http://granny-server:8181/jellyfish
ProxyPreserveHost On
SecRuleRemoveById 981059 981060
<Directory "/var/www/images">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
আমি যদি যাই তবে আমি এতে http://web-server
পুনঃনির্দেশিত হয়েছি http://web-server/jellyfish/home
কিন্তু এটি একটি 404 দেয়, অ্যাক্সেস করার চেষ্টা করার অভিযোগ সম্পর্কে /jellyfish/jellyfish/home
- এনবি ব্রাউজারের ঠিকানা বারটিতে ডাবল থাকে না /jellyfish
।
HTTP ERROR 404
Problem accessing /jellyfish/jellyfish/home. Reason:
Not Found
এবং, আমি যদি যাই তবে আমি এতে http://web-server/login
পুনঃনির্দেশিত হয়েছি http://web-server/jellyfish/login?0
তবে এটি অ্যাক্সেস করার চেষ্টা করার অভিযোগের সাথে একটি 404 দেয় /jellyfish/jellyfish/login
।
HTTP ERROR 404
Problem accessing /jellyfish/jellyfish/login. Reason:
Not Found
সুতরাং, আমি অনুমান করছি যে আমি কোনওভাবে দু'বার নিয়মগুলির মধ্য দিয়ে যাচ্ছি। home
ইউআরএল এর বিট প্রথম উদাহরণ থেকে এসেছে কোথা থেকে আমি সামান্য বিস্মিত ।
দয়া করে কেউ আমাকে সঠিক দিকে নির্দেশ করতে পারে?
ধন্যবাদ, জে।
ProxyPassMatch
ব্যবহার করে এমন একটি সমতুল্য প্রতিস্থাপন করেছিmod_rewrite
, যাjellyfish
ইউআরএল থেকে অপসারণের চ্যালেঞ্জকে সম্বোধন করে । আমি এখন 404 এর একটি সংখ্যার সন্ধান করছি যা কারাফের জন্য প্রয়োজনীয় উইকেট উপাদানগুলির মতো অন্তর্নিহিত উপাদানগুলির বিষয়ে পপ আপ। এখানে একটি কোড স্নিপেট রয়েছে:# proxy to the Jellyfish server (ignoring images) RewriteCond %{REQUEST_URI} !^/(images)(.*)$ RewriteRule ^(/.*)$ http://app-server:8181/jellyfish$1 [P] ProxyPassReverse / http://app-server:8181/jellyfish/