অ্যাপাচি 2 এ ডিফল্ট ভার্চুয়ালহস্টকে কীভাবে অক্ষম করবেন?


10

ডিজাইন দ্বারা অ্যাপাচি 2 এ, কোনও অজানা হোস্টের সাথে কোনও http অনুরোধ প্রথম লোড হওয়া ভার্চুয়ালহোস্টের দিকে পরিচালিত হবে। এই বৈশিষ্ট্যটি অক্ষম করার কোনও উপায় আছে? অন্যভাবে বলেছে, আমি একটি ওয়েব সার্ভার রাখতে চাই যেখানে ব্যবহারকারী কেবলমাত্র ভার্চুয়ালহোস্ট সংজ্ঞাগুলি স্পষ্টভাবে নামকরণ করতে পারে। সার্ভারনাম বা সার্ভারআলিয়াস লাইনে স্পষ্টভাবে উল্লিখিত না হওয়া অন্য কোনও হোস্টনামকে চুপচাপ উপেক্ষা করা উচিত।

এটা কি সম্ভব?

Listen 80
NameVirtualHost *

<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>

আপডেট: নীচে এবং অন্য কোথাও প্রস্তাবিত হিসাবে, চুপচাপ একটি অনুরোধ উপেক্ষা করা ভাল ধারণা নাও হতে পারে এবং সম্ভবত এইচটিটিপি-র জন্য আরএফসি-র ব্রেক করে। তবে যেহেতু ভার্চুয়াল হোস্টগুলির একাধিক পৃথক পৃথক শারীরিক এইচটিটিপি সার্ভারের অনুকরণের জন্য ডিজাইন করা হয়েছে, তাই নীরব উপেক্ষা করার পদ্ধতিটি আমার কাছে অযৌক্তিক বলে মনে হয় না। এটি আইপি ভিত্তিক ভার্চুয়াল হোস্টিং এবং আইপিগুলির কয়েকটি ফায়ারওয়ালিংয়ের সমান হবে (সম্ভবত সমস্ত ক্লায়েন্টের পক্ষে নয়)।

উত্তর:


4

আমি নিশ্চিত নই যে "নিঃশব্দে ব্যর্থ হওয়া" একটি ভাল ধারণা। আপনার ক্লায়েন্টকে কি ঘটেছে তার কমপক্ষে কিছু ইঙ্গিত দেওয়া উচিত । সম্ভবত আপনি কোনও HTTP 410 "চলে গেছে" ত্রুটি পাঠাতে পারেন। এর মতো কিছুতে কৌশলটি করা উচিত:

RewriteRule ^.*$ - [G]

এছাড়াও, আপনি একটি কাস্টম 410 ত্রুটি দস্তাবেজ নির্দিষ্ট করতে সক্ষম হওয়া উচিত যা খালি এইচটিএমএল পৃষ্ঠা হতে পারে।


আমি নিজে থেকেই এই সমাধানটি আবিষ্কার করে শেষ করেছি। মোড_উরাইট এবং "পুনরায় লেখার ইঞ্জিন চালু" লোড করার জন্য আপনার লাইন যুক্ত করা উচিত যে এগুলি প্রয়োজনীয় নাও হতে পারে। তারা আমার জন্য ছিল। :)
হার্ভে

2
এছাড়াও, যেহেতু আমরা কেবল গোন বা নিষিদ্ধ বলছি এবং আরও গুরুত্বপূর্ণভাবে, "-" প্রতিস্থাপনকে বাধা দেয়, তাই রেজেক্স আরও সহজ হতে পারে:RewriteRule . - [F]
হার্ভে

17

এখানে একটি বিকল্প উপায় যা পুনর্লিখনের নিয়মগুলিকে জড়িত করে না:

<VirtualHost _default_:*>
    <Location />
        Deny from all
        Options None
        ErrorDocument 403 Forbidden.
    </Location>
</VirtualHost>

2
এটি গ্রহণযোগ্য সমাধান হওয়া উচিত। +1
গ্রেগ স্মিট

আমি এই সমাধান সম্পর্কে পরিষ্কার নয়। আমার বেশ কয়েকটি ভিএইচএসটি ফাইল রয়েছে এবং আমি কী এটিতে এটি দিয়ে একটি নতুন ফাইল তৈরি করব? আমি এটি চেষ্টা করেছিলাম এবং আমি ফাইলটির নাম 001.default.conf রেখেছি তবে এখনও আমার সাবডোমেনগুলি পুনরায় পরিচালিত হচ্ছে।
মুক্তিপ্রতি 20'18

@ ফ্রেমটমুন প্রশ্নটিতে উল্লিখিত হিসাবে, "কোনও অজানা হোস্টের সাথে কোনও http অনুরোধ প্রথম লোড হওয়া ভার্চুয়ালহোস্টের দিকে পরিচালিত হবে "। এই "ডিফল্ট" <VirtualHost>সেইজন্য নির্ধারণ করা আবশ্যক প্রথম সার্ভার কনফিগ হবে। অবশ্যই কোন ফাইলটি অবশ্যই আপনার কনফিগারেশনের উপর নির্ভরশীল। (তবে, আপনার "পুনঃনির্দেশিত সাবডোমেনগুলি" সমস্যাটি কোনও সম্পর্কযুক্ত সমস্যা হতে পারে))
মিঃ হোয়াইট

হাহ। আমার সার্ভারের দিকে ইঙ্গিত করে এমন অন্যান্য ডোমেনগুলি ব্যবহার করার সময়, এটি 403 করে না, এটি সার্ভারনেমটি ম্যাচ না হলেও, এটি খুঁজে পাওয়া প্রথম ভার্চুয়ালহোস্টটি
তুলেছে

1

এটি আমার জন্য কাজ করেছে

<VirtualHost x.x.x.x:80 [x:x::x:x:x:x]:80>
  ServerName myactualservername.com
  ServerAlias *
  <Location />
    Deny from all
    Options None
    ErrorDocument 403 Forbidden.
  </Location>
</VirtualHost>

আপনার প্রকৃত আইপিভি 4 এর সাথে এক্সএক্সএক্সএক্সএক্স এবং
আইপিভি 6 প্রতিস্থাপন করুন ম্যাক্টুয়ালসভারনেমে.কমকে মেশিন দ্বারা পরিবেশন করা একটি আসল ওয়েবসাইটের সাথে

আমি নাম ভিত্তিক ভার্চুয়াল হোস্ট ব্যবহার করছি।
এই সমাধানের জন্য ক্রেডিট https://serverfault.com/a/82309/459796 এ যায়

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