মার্জ করার ক্রমটি মোটামুটি জটিল, এবং ব্যতিক্রমগুলি দ্বারা ধরা পড়ে যাওয়া সহজ ... অ্যাপাচি ডকটি হ'ল বিভাগগুলি কীভাবে একত্রিত করা হয় "
সেই ডকুমেন্টেশন অনুসারে, বিভাগগুলির মার্জ করার ক্রমটি প্রতিটি ম্যাচের ধরণের জন্য মিলিত সমস্ত এন্ট্রিগুলিকে ক্রমরূপে কনফিগারেশন ফাইলগুলিতে মোকাবেলা করে এবং তারপরে পরবর্তী ধরণে (<ডিরেক্টরি বাদ দিয়ে ব্যতীত) চলে যায় >, যা পাথের নির্দিষ্টতা অনুসারে চিকিত্সা করা হয়)।
ধরনের অর্ডার Directory, DirectoryMatch, Files, এবং পরিশেষে Location। পরে ম্যাচগুলি আগের ম্যাচগুলিকে ওভাররাইট করে। (* প্রক্সিপাস এবং আলিয়াস আবার আলাদাভাবে চিকিত্সা করা হয়, নোটটি শেষে দেখুন)
এবং এই বিধিগুলির জন্য বেশ কয়েকটি গুরুত্বপূর্ণ ব্যতিক্রম রয়েছে যা একটি প্রকটপাস এবং <লোকেশন> বিভাগে প্রক্সিপাশ ব্যবহার করে। (নিচে দেখ)
সুতরাং উপরোক্ত আপনার উদাহরণ থেকে http://somehost.com/sub/foobar কে ফোলউইং কনফিগারেশনের সাথে অনুরোধ করছি ;
<Location / >
ProxyPass http://backend.com/
Order allow,deny
Satisfy any
</Location>
<Location /sub/foo>
Order allow,deny
</Location>
<Location /sub >
Order deny,allow
Require valid-user
Satisfy all
</Location>
<Location /doesnt/match >
ProxyPass !
</Location>
এটি নিম্নলিখিত নির্দেশাবলী জমে ...
ProxyPass http://backend.com/
Order allow,deny
Satisfy any
Order allow,deny
Order deny,allow
Require valid-user
Satisfy all
পরবর্তী ম্যাচগুলির সাথে পূর্ববর্তী সদৃশগুলি মুছে ফেলা হয়, যার ফলস্বরূপ;
ProxyPass http://backend.com/
Order deny,allow
Require valid-user
Satisfy all
ব্যাখ্যার
পরে ম্যাচগুলি <Directory>যেখানে ক্রমে ম্যাচগুলি প্রক্রিয়াকরণ করা হয় সেখানে ব্যতীত আগের ম্যাচগুলি ওভাররাইট করে: সংক্ষিপ্ত ডিরেক্টরি উপাদানটি সবচেয়ে দীর্ঘ lon
সুতরাং উদাহরণস্বরূপ,
কনফিগারেশনে এই নির্দেশিকাগুলি কী আদেশে নির্দিষ্ট করা হয়েছে এবং আরও নির্দিষ্ট ম্যাচের জয়গুলি নির্বিশেষে
<Directory /var/web/dir>
প্রক্রিয়া করা হবে
<Directory /var/web/dir/subdir>
।
কোনও মিলে যাওয়া Locationনির্দেশনা সর্বদা পূর্ববর্তী মিলের Directoryদিকনির্দেশকে ওভাররাইড করে ।
মৌলিক ধারণা যে ভালো একটি অনুরোধ জন্য GET /some/http/request.htmlঅভ্যন্তরীণভাবে এটি একটি মাধ্যমে ফাইলসিস্টেম একটি অবস্থান অনুবাদ করা হবে Alias, ScriptAliasঅথবা অধীনে সাধারন ফাইল অবস্থানের জন্য DocumentRootVirtualHost জন্য এটি মেলে না।
সুতরাং একটি অনুরোধের নীচের বৈশিষ্ট্যগুলি মিলবে যা এটি মিলে যাওয়ার জন্য ব্যবহার করে:
Location: /some/http/request.html
File: /var/www/html/mysite/some/http/request.html
Directory: /var/www/html/mysite/some/http
এ্যাপাচি তারপর প্রয়োগ করা হবে এ সব চালু Directory, ম্যাচ কনফিগ থেকে ডিরেক্টরির বিশেষত্বের জন্য, এবং তারপর ঘুরে আবেদন DirectoryMatch, Files, এবং পরিশেষে Locationযে ক্রমে তারা সম্মুখীন হয় সাথে মেলে।
সুতরাং Locationওভাররাইডগুলি Files, যা সর্বনিম্ন অগ্রাধিকারের DirectoryMatchসাথে পাথের সাথে মিল Directoryরয়েছে over সুতরাং আপনার উপরের উদাহরণে, অনুরোধটি /sub/foobarপ্রথম 3 অবস্থানের সাথে মিলিত হওয়ার অনুরোধ , অতএব শেষটি বিরোধী নির্দেশাবলীর জন্য জয়ী।
(আপনি ঠিক বলেছেন যে কোনও প্রান্তের কেস কীভাবে সমাধান করা হয় তা ডক্স থেকে স্পষ্ট নয়, এটি যে কোনও allow from *ধরণের নির্দেশাবলী সংশ্লিষ্টদের সাথে সংযুক্ত হতে পারে তা সম্ভব Order allow,deny, তবে আমি এটি পরীক্ষা করিনি Also এছাড়াও আপনি যদি মেলে Satisfy Anyতবে কি হয় তবে আপনি পূর্বে একটি সংগ্রহ করেছে Allow from *...)
প্রক্সিপাস এবং এলিয়াস সম্পর্কে আকর্ষণীয় নোট
বিরক্তিকর হতে, ProxyPassএবং Aliasঅন্য দিকে কাজ করতে দেখা যায় .... ;-) এটি মূলত প্রথম ম্যাচটি হিট করে, তারপরে থেমে যায় এবং এটি ব্যবহার করে!
Ordering ProxyPass Directives
The configured ProxyPass and ProxyPassMatch rules are
checked in the order of configuration.
The first rule that matches wins. So
usually you should sort conflicting ProxyPass rules starting with the
longest URLs first. Otherwise later rules for longer URLS will be
hidden by any earlier rule which uses a leading substring of the URL.
Note that there is some relation with worker sharing.
For the same reasons exclusions must come before the general
ProxyPass directives.
সুতরাং মূলত, এলিয়াস এবং প্রক্সিপাস নির্দেশাবলী নির্দিষ্ট করতে হবে, প্রথমে সুনির্দিষ্ট;
Alias "/foo/bar" "/srv/www/uncommon/bar"
Alias "/foo" "/srv/www/common/foo"
এবং
ProxyPass "/special-area" "http://special.example.com" smax=5 max=10
ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On
যাইহোক, @orev হিসাবে উল্লেখ করেছেন। কোনও অবস্থানের নির্দেশিকায় আপনার প্রক্সিপাস নির্দেশিকা থাকতে পারে এবং তাই কোনও অবস্থানের মধ্যে আরও নির্দিষ্ট প্রক্সিপাস পূর্বের পাওয়া প্রক্সিপাসকে ছাড়িয়ে যাবে।