লিনাক্স / ওএসএক্সে আমার / ইত্যাদি / হোস্ট / ফাইলে আমি কীভাবে একটি ওয়াইল্ডকার্ড সাবডোমেন করব?


168

আমার লোকালহোস্টে আমার সাব-ডোমেনগুলি পরীক্ষা করা দরকার। *.localhost.comআমার /etc/hosts/ফাইলে যুক্ত করার এই ফলাফলটি আমি কীভাবে কার্যকরভাবে করতে পারি ?

যদি এটি সম্ভব না হয় তবে আমি কীভাবে এই সমস্যাটি ঘিরে কাজ করব? আমার লোকাল সার্ভারে আমার ওয়াইল্ডকার্ড সাব-ডোমেন পরীক্ষা করা দরকার। এটি একটি জ্যাঙ্গো ডেসারভার, জ্যাঙ্গো দেব সার্ভার কি সাব-ডোমেনগুলি পরিচালনা করতে পারে? সফ্টওয়্যার / রাউটিংয়ের অন্য কোনও টুকরা কি আমার শেষ ফলাফলটি দিতে পারে?


1
সুপারকারের উপর নির্ভর করে?
পল আর

আমি জানি লোকেরা বলে যে এটা সম্ভব নয়! তবে আমি কীভাবে এটি করব! / ইত্যাদি / হোস্টগুলির বাইরের কিছু কী / আমি এফেক্টটি পেতে ব্যবহার করতে পারি। আমি একটি ডেভলপমেন্ট সার্ভার পরীক্ষা করছি।
মাইকন


যেহেতু বেশিরভাগ উত্তরগুলি আপনার প্রথম প্রশ্নে (লোকালহোস্ট সাবডোমেন ওয়াইল্ডকার্ডগুলি) ফোকাস করছে, আমি আপনার দ্বিতীয় প্রশ্নের উত্তর হিসাবে মন্তব্য করব: হ্যাঁ, জ্যাঙ্গো দেব সার্ভার লোকালহোস্ট সাবডোমেনগুলি পরিচালনা করতে পুরোপুরি সক্ষম, আপনাকে কেবল আপনার ব্রাউজার এবং আপনার ওএসকে বোঝাতে হবে ট্র্যাফিকটিকে তার পথে পাঠাতে (নীচের বিভিন্ন সমাধানগুলির মধ্যে একটি ব্যবহার করে)!
hheimbuerger

উত্তর:


43

আমি পাইথনে একটি ডিএনএস প্রক্সি লিখেছি। এটি / ইত্যাদি / হোস্টগুলিতে ওয়াইল্ডকার্ড এন্ট্রি পড়বে। এখানে দেখুন: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py


এটি নিখুঁত! আমি দীর্ঘদিন ধরে এর মতো একটি সহজ সমাধান খুঁজছিলাম (ওএসএক্স ম্যাভারিকস বিটিডব্লিউতে কাজ করা)
বিলি মুন

2
এখন, আমরা যদি কেবল এটি করতে পারতাম pip install:)
metakermit

1
আমি এটি ইনস্টল করেছি, সবকিছু করেছি এবং এটি চালিয়েছি, তবে এটি সাইটগুলি অবরুদ্ধ করে না।
ডিসপ্লেনেম

এটি যথেষ্ট upvote করতে পারবেন না। আমি এটিকে চিরকালের জন্য প্রয়োজন, প্রশ্ন ও উত্তরের এই রত্নকে হোঁচট খেয়েছি এবং আমি পাইথন হ্যাকার, এবং এটি একটি ঝরঝরে। ভাগ করে নেওয়ার জন্য ধন্যবাদ!
ফারলে

152

Dnsmasq ইনস্টল করুন (যাইহোক আমি আমার সমস্ত লিনাক্স ডেস্কটপগুলিতে ডিএনএস ক্যাশে হিসাবে এটি করি)। ইন dnsmasq.confলাইন যোগ করুন:

address=/localhost.com/127.0.0.1

7
উজ্জ্বল! ম্যাক ব্যবহারকারীদের জন্য দ্রষ্টব্য, এটি সত্যই সহজ: 1. sudo port install dnsmasq2. সম্পাদনা করুন /opt/local/etc/dnsmasq.conf3.sudo port load dnsmasq
টমক

17
ব্রিউ সহ ওএসএক্স: উপরের মতো একই তবে ব্রেইন ইনস্টল করুন ডানমাস্ক
ম্যাট হামফ্রে

1
fyi ব্রিবু> বন্দর (পুনরায় @ ম্যাটহাম্প্রে পরামর্শ)
ইলেক্টব্ল্যাক

1
এই উদাহরণটি আমার পক্ষে কাজ করে না, সম্ভবত কারণ আমি স্থানীয় পরিবেশনার জন্য ভাগ্রান্টআপ ডট কম ব্যবহার করছি । চিন্তা করবেন না, আমি ইতিমধ্যে আইপিটিকে সঠিকভাবে পরিবর্তন করেছি 192.168.50.11তবে ডিএনএস সমাধান করছে না। কোন ধারণা, "নন-127.0.0.1" আইপি এর জন্য এই উদাহরণটি কি সঠিক?
ব্রায়ান

6
দুর্দান্ত টিপ। উবুন্টু 14.04 ডেস্কটপের জন্য (যা ডিফল্টরূপে dnsmasq চালায়) একটি ফাইল তৈরি করুন /etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.confএবং এতে লাইনটি address=/localhost.com/127.0.0.1রাখুন, তারপরে পুনরায় চালু করুন।
ব্যবহারকারী 38397

60

/etc/hostsফাইলটিতে ওয়াইল্ডকার্ড নির্দিষ্ট করা সম্ভব নয় । হয় প্রয়োজনীয় হোস্টনামগুলি স্পষ্টভাবে নির্দিষ্ট করুন বা বিকল্পভাবে উপযুক্ত নিয়ম সহ স্থানীয় নাম সার্ভার সেট আপ করুন।


15

আপনাকে একটি ডিএনএস সার্ভার সেট আপ করতে হবে এবং প্রতিটি ক্লায়েন্টকে এটি রেজুলেশনের জন্য ব্যবহার করতে হবে। সার্ভার নিজেই ডিএনএসমাস্কের মতো "হালকা" বা BIND এর মত ভারী হতে পারে ।


ডান্সমাস্কের জন্য +1, যা সত্যই নথিবদ্ধ এবং সহজেই ব্যবহারযোগ্য
ডেভিড স্মিট

dnsmasq এটি করতে সক্ষম নয়।
ডিসপ্লেনেম

--address=Dnsmasq.conf ম্যান পেজের বিভাগে বর্ণিত আচরণের কোন অংশটি উপরে বর্ণিত ব্যবহারের ক্ষেত্রে আবরণ দেয় না?
জেরাল্ড কম্বস

11

সাধারণ কর্মপ্রবাহ (কোনও কিছু ইনস্টল করার দরকার নেই)

আমি ব্যক্তিগতভাবে সেটির জন্য একটি প্যাক ফাইল তৈরি করতে চাই এবং আমার ব্রাউজারটি কেবল এটি ব্যবহার করতে চাই।

পদক্ষেপ 1: একটি ফাইল তৈরি করুন যেমন: *.proxy.pac*কোথাও (আমি আমার $homeফোল্ডারটি ব্যবহার করি )

পদক্ষেপ 2: এই কোডটি আটকে দিন (উদাহরণস্বরূপ 8000 পোর্ট সহ):

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*localhost")) {
    return "PROXY localhost:8000";
  }
  return "DIRECT";
}

পদক্ষেপ 3 : আপনার ব্রাউজারটিকে এই পিএসি ফাইলটি ব্যবহার করুন।

পিএসি এবং ফায়ারফক্সের জন্য ইউটিউব ভিডিও

পদক্ষেপ 4 : এখন আপনি অ্যাক্সেসের মাধ্যমে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে পারবেন:http://mysubdomain.localhost/

পদক্ষেপ 5: উপভোগ করুন :)


3
সম্ভবত এটি উল্লেখযোগ্য যে এটি কেবল আপনার ব্রাউজারকেই প্রভাবিত করবে। অন্যান্য প্রোগ্রাম (যেমন এর wgetদ্বারা প্রভাবিত হবে না)। এটি কোনও সমস্যা নয়, তবে সম্ভবত এটি উল্লেখ করা ভাল।
উইলেম ভ্যান অনসেম

আপনি যদি .pac রুটে যান এবং আপনি একটি নোড.জেএস সার্ভার প্রয়োগ করছেন তবে আপনি req.urlএখন অবাক হবেন যে এটি একটি পরম URL। এটি করা হয়েছে কারণ এই ধারণাটি হ'ল আপনি একটি প্রকৃত প্রক্সি সার্ভার লিখতে চান, তবে আপনি যদি এই কৌশলটিতে এসে পৌঁছান তবে ডিবাগিংয়ের জন্য / ইত্যাদি / হোস্টের এন্ট্রি যুক্ত করা বন্ধ করার উপায় হিসাবে অবাক করা হবে। এফআইআই তাদের জন্য যারা সম্ভবত একই রাস্তায় যেতে পারে।
টম বাটেল

5

আমি আমার একটি পুরানো প্রকল্প সজ্জিত করেছি:

https://github.com/airtonix/avahi-aliases

প্রয়োজনীয়তা:

  • লিনাক্স যেখানে আাহি এবং পাইথন-আভাহি ইনস্টলযোগ্য
  • আপনি .local ডোমেনগুলি দিয়ে ঠিক আছেন (আভাহী অন্য কোনও ধরণের সমর্থন করে না)

Dnsmasq বা পাইথন ডিএনএস প্রক্সি ব্যবহারের ক্ষেত্রে সুবিধা:

  • আপনার স্থানীয় নেটওয়ার্কের অন্যান্য অবাহী / বোনজর ব্যবহারকারীরা আপনার তৈরি করা এলিয়াসগুলি এবং আপনার নেটওয়ার্কের কাছে ঘোষণা করার সমাধান করতে পারে (আপনি প্রদানের ক্ষেত্রে 5353 পোর্টে অ্যাক্সেসের অনুমতি দিচ্ছেন)

4

এই ডিএনএস ভিত্তিক সমাধানটি কোনও ক্ষেত্রে ইনস্টল করার প্রয়োজন ছাড়াই আমার ক্ষেত্রে নিখুঁতভাবে কাজ করেছে: https://gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (ম্যাক ওএসএক্স 10.9)


ম্যাক ওএসএক্সের জন্য এমন একটি দুর্দান্ত সমাধান।
iDev247

মৃত লিঙ্ক, দয়া করে আপনার লিঙ্কটি, আপনার সমাধানটি আপডেট করুন বা কোনওভাবে এই উত্তরটিকে অবমূল্যায়ন করুন। চিয়ার্স।
এরিক হোডনস্কি

সম্পন্ন (ব্যাকআপ যোগ করা হয়েছে)
ফেদেরির RYKHTIK

3

আপনি কোনও ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন না /etc/hosts

বিআইএনএনডি, অন্তর্নির্মিত তবে নিষ্ক্রিয় ডিএনএস সার্ভার এবং অ্যাপাচি ব্যবহার করে কীভাবে ওএস এক্সে কীভাবে সম্পন্ন করা যায় সে সম্পর্কে এখানে একটি ভাল ওয়াকথ্রো দেখুন ।


5
সাব-ডোমেনগুলির সাথে অ্যাপাচে কোনও সম্পর্ক নেই।
বেনামে

3

আপনি ব্যবহার করতে চান তাহলে dnsmasqসঙ্গে NetworkManagerআপনি (বা এমনকি? আবশ্যক) শুরু করতে পারেন dnsmasqথেকে NetworkManagerযোগ করে

dns=dnsmasq

to /etc/NetworkManager/NetworkManager.conf। তারপরে dnsmasq কনফিগারেশনে যান /etc/NetworkManager/dnsmasq.confবা /etc/NetworkManager/dnsmasq.d/সম্মান দিন।


2

সংক্ষিপ্ত উত্তর:

আপনার / ইত্যাদি / হোস্ট / ফাইল আপনাকে ওয়াইল্ডকার্ড বা পোর্ট নম্বর ব্যবহার করতে দেয় না। আপনার প্রতিটি সাবডোমেনের জন্য আপনাকে একটি করে এন্ট্রি তৈরি করতে হবে


2
আপনাকে পোর্ট নম্বর নির্দিষ্ট করতে দেয় কি? ডিএনএস আফাইক নয় Not
ptman

2

সংক্ষিপ্ত উত্তর আপনি না। আপনি যেটি অর্জন করতে চান তা সম্পর্কে আপনাকে আরও দীর্ঘতর উত্তর প্রয়োজন, কারণ সম্ভবত এটির জন্য একটি আরও ভাল উপায় এবং এটির জন্য আলাদা উপায় রয়েছে।

ওয়েব হোস্টিংয়ের জন্য (আমি এটি অন্যথায় কখনও দেখিনি) ডিভাইসটিতে ভার্চুয়াল হোস্টিং সচেতন ওয়েব সার্ভারের সংমিশ্রণে সম্পন্ন করা হয়। ওয়াইল্ডকার্ড ডিএনএস রেকর্ড (উইকিপিডিয়া), এবং বাইন্ড এবং অ্যাপাচি ব্যবহার করে লিনাক্সের জন্য অ্যাপাচি এবং বিনয়ের সাথে হোস্টিংয়ের একটি নিবন্ধ সম্পর্কে আরও তথ্যের জন্য।

সবচেয়ে খারাপ সময়ে, আপনি মনে করেন কোনও স্থানীয় ডিএনএস সার্ভার ব্যবহার করতে পারেন।


2

এই বিষয়টির জন্য একটি সাধারণ কাজ হ'ল সাব-ডোমেনের ডিরেক্টরি ম্যাপ করা। এর জন্য খুব সোজা উপায় হ'ল হোস্ট ফাইলটিতে ডিরেক্টরি ভিত্তিক এন্ট্রিগুলি স্বয়ংক্রিয়ভাবে যুক্ত করা:

#!, / Usr / bin / python-

আমদানি ওএস

হোস্টফিল = খোলা ("/ ইত্যাদি / হোস্ট", "এ +");

লাইন = হোস্টফিল.ড্রেডলাইনস ()

os.listdir ('/ opt / subdomainDirs') এ ফাইলনামের জন্য:

    enterExists = মিথ্যা
    লাইনে লাইনের জন্য:
        যদি লাইনে ফাইল নাম থাকে:
            enterExists = সত্য =  

    যদি না এন্ট্রিএক্সজিস্ট:
        হোস্টফিল.উইরাইট ("127.0.0.1" + ফাইলের নাম + ".লোকালহোস্ট \ n");

2

এই সমস্যার চূড়ান্ত উত্তর হিসাবে আমি যা বিবেচনা করি তার জন্য ধন্যবাদ শান্দিই, আশা করি আমি কেবল মন্তব্য করতে পারব তবে আসল লক্ষ্যটি অর্জন করার চেষ্টা করা লোকদের জন্য এখানে সম্পূর্ণ কনফিগারেশন রয়েছে (ওয়াইল্ডকার্ডস সমস্ত একই কোডবেজের দিকে ইঙ্গিত করছে - কিছুই ইনস্টল করবেন না, পরিবেশ পরিবেশ ইত্যাদি) , এক্সএএমপিপি)

হোস্ট ফাইল (একটি এন্ট্রি যোগ করুন)

ফাইল: / ইত্যাদি / হোস্ট (উইন্ডোজবিহীন)

127.0.0.1   example.local

httpd.conf কনফিগারেশন (vhosts সক্ষম)

ফাইল: / XAMPP/etc/httpd.conf

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

httpd-vhosts.conf কনফিগারেশন

ফাইল: এক্সএএমপিপি / ইত্যাদি / অতিরিক্ত / httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    DocumentRoot "/path_to_XAMPP/htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs/example.local-error_log"
#    CustomLog "logs/example.local-access_log" common
</VirtualHost>

অ্যাপাচি পুনরায় চালু করুন

প্যাক ফাইল তৈরি করুন:

যাই হোক না কেন হিসাবে সংরক্ষণ করুন। প্যাক আপনি যেখানেই চান এবং তারপরে ব্রাউজারের নেটওয়ার্ক> প্রক্সি> স্বয়ংক্রিয়-কনফিগারেশন সেটিংসে ফাইলটি লোড করুন (আপনি যদি এটি পরিবর্তন করেন তবে পুনরায় লোড করুন)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}

2

dnsmasq আমার জন্য কাজ করেছিল, ব্যতীত আমাকে কিছু অতিরিক্ত পদক্ষেপ নিতে হয়েছিল।

সম্পূর্ণ পদ্ধতিটি এখানে:

  1. শুরুতে যোগ /etc/resolv.confনিম্নলিখিত লাইন দিয়ে

    nameserver 127.0.0.1
    
  2. নিম্নলিখিত লাইন যুক্ত করুন /etc/dnsmasq.conf

    listen-address=127.0.0.1
    address=/localhost.localdomain/127.0.0.1
    address=/localhost/127.0.0.1
    
  3. Dnsmasq পুনরায় চালু করুন


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