ලිනක්ස් / ඕඑස්එක්ස් හි මගේ / etc / host / ගොනුවේ, මම ආදේශක උප ඩොමේනයක් කරන්නේ කෙසේද?


182

මගේ localhost හි උප වසම් පරීක්ෂා කිරීමට මට අවශ්‍යය. *.localhost.comමගේ /etc/hosts/ගොනුවට එකතු කිරීමේ මෙම ප්‍රති result ලය effectively ලදායී ලෙස ලබා ගන්නේ කෙසේද ?

එය කළ නොහැකි නම්, මෙම ගැටළුව විසඳා ගන්නේ කෙසේද? මගේ දේශීය සේවාදායකයේ ආදේශක කාඩ් වසම් පරීක්ෂා කිරීමට මට අවශ්‍යය. එය ජැන්ගෝ ඩිවර්සර්වරයකි, ජැංගෝ ඩිව් සර්වරයට උප වසම් හැසිරවිය හැකිද? මට අවශ්‍ය අවසාන ප්‍රති result ලය වෙනත් මෘදුකාංගයක් / රවුටරයක් ​​ලබා දිය හැකිද?


1
සුපර් යූසර්ට අයත්ද?
පෝල් ආර්

මම දන්නවා මිනිස්සු කියනවා ඒක කරන්න බැහැ කියලා! නමුත් මම කෙසේ හෝ එය කරන්නේ කෙසේද! / Etc / සත්කාරක / වලින් පිටත යමක් යනු කුමක්ද? මම සංවර්ධන සේවාදායකයක් පරීක්ෂා කරමින් සිටිමි.
මයික්එන්


බොහෝ පිළිතුරු ඔබගේ පළමු ප්‍රශ්නය (localhost subdomain wildcards) වෙත යොමු වී ඇති හෙයින්, මම ඔබේ ද්විතීයික ප්‍රශ්නයට අදහස් දැක්වීමක් ලෙස පිළිතුරු දෙමි: ඔව්, ජැන්ගෝ ඩෙව් සේවාදායකයට දේශීය හොස්ට් උප ඩොමේන් හැසිරවීමට පරිපූර්ණ හැකියාවක් ඇත, ඔබට ඔබගේ බ්‍රව්සරය සහ ඔබේ මෙහෙයුම් පද්ධතිය ඒත්තු ගැන්විය යුතුය. ගමනාගමනය එහි මාර්ගයට යැවීමට (පහත විවිධ විසඳුම් වලින් එකක් භාවිතා කරමින්)!
hheimbuerger

Answers:


45

මම පයිතන් හි dns ප්‍රොක්සියක් ලියා ඇත. එය / etc / ධාරක වල ආදේශක ඇතුළත් කිරීම් කියවනු ඇත. මෙහි බලන්න: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py


මෙය පරිපූර්ණයි! මම දීර් this කාලයක් තිස්සේ මේ වගේ සරල විසඳුමක් සොයමින් සිටියෙමි (OSX Mavericks BTW හි වැඩ කිරීම)
Billy Moon

2
දැන්, අපට එය පමණක් කළ හැකි pip installනම් :)
metakermit

1
මම මෙය ස්ථාපනය කර, සියල්ල කර එය ධාවනය කළෙමි, නමුත් එය අඩවි අවහිර නොකරයි.
DisplayName

මෙය ප්‍රමාණවත් ලෙස ඉහළ නැංවිය නොහැක. මට මෙය සදහටම අවශ්‍ය වී ඇති අතර, ප්‍රශ්නයේ සහ පිළිතුරේ මෙම මැණිකට බාධා ඇති වී ඇති අතර, මම ටිකක් පයිතන් හැකර් කෙනෙක් වන අතර මෙය ඉතා හොඳ පිළිවෙලකි. බෙදාගැනීම ගැන ස්තූතියි!
ෆාර්ලි

160

Dnsmasq ස්ථාපනය කරන්න (මම මෙය කෙසේ හෝ DNS හැඹිලියක් ලෙස මගේ සියලුම ලිනක්ස් ඩෙස්ක්ටොප් පරිගණකවල කරන්නෙමි). දී dnsmasq.confරේඛාව එකතු කරන්න:

address=/localhost.com/127.0.0.1

7
දීප්තිමත්! මැක් භාවිතා කරන්නන් සඳහා සටහන, මෙය ඇත්තෙන්ම මෙය සරල ය: 1. sudo port install dnsmasq2. සංස්කරණය /opt/local/etc/dnsmasq.conf3.sudo port load dnsmasq
ටොම්ක්

18
OSX සමඟ බීර: ඉහත ආකාරයටම නමුත් බීර ස්ථාපනය dnsmasq
මැට් හම්ෆ්රි

1
fyi brew> port (re attMattHumphrey යෝජනා)
electblake

1
මෙම උදාහරණය මට වැඩ කරන්නේ නැත, සමහර විට මම දේශීය සේවය සඳහා vagrantup.com භාවිතා කරන නිසා විය හැකිය . කණගාටු නොවන්න, මම දැනටමත් IP එක නිවැරදි එකක් ලෙස වෙනස් කර ඇති 192.168.50.11නමුත් DNS විසඳන්නේ නැත. කිසියම් අදහසක්, "127.0.0.1 නොවන" IP සඳහා මෙම උදාහරණය නිවැරදි ද?
බ්‍රයන්

6
නියම ඉඟිය. උබුන්ටු 14.04 ඩෙස්ක්ටොප් එකක් සඳහා (එය පෙරනිමියෙන් dnsmasq ධාවනය කරයි), නමින් ගොනුවක් සාදා /etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.confඑහි පේළිය දමා address=/localhost.com/127.0.0.1නැවත ආරම්භ කරන්න.
user38397

66

/etc/hostsගොනුවේ ආදේශක කාඩ්පත් සඳහන් කළ නොහැක. එක්කෝ අවශ්‍ය ධාරක නාම පැහැදිලිව සඳහන් කරන්න හෝ විකල්ප නීති සමඟ දේශීය නාම සේවාදායකයක් සකසන්න.


15

ඔබට ඩීඑන්එස් සේවාදායකයක් සැකසිය යුතු අතර සෑම සේවාදායකයෙක්ම එය විසර්ජනය සඳහා භාවිතා කළ යුතුය. සේවාදායකයම dnsmasq තරම් "ආලෝකය" හෝ BIND තරම් බර විය හැකිය .


Dnsmasq සඳහා +1, එය මනාව ලේඛනගත කර ඇති අතර භාවිතයට පහසුය
ඩේවිඩ් ෂ්මිට්

dnsmasq හට මෙය කළ නොහැක.
DisplayName

--address=ඉහත විස්තර කර ඇති භාවිත නඩුව ආවරණය නොකරන dnsmasq.conf man පිටුවේ විස්තර කර ඇති හැසිරීමේ කුමන කොටසද ?
ජෙරල්ඩ් පනා

11

සරල කාර්ය ප්‍රවාහය (කිසිවක් ස්ථාපනය කිරීමට අවශ්‍ය නැත)

මම පෞද්ගලිකව කැමතියි ඒ සඳහා PAC ගොනුවක් නිර්මාණය කර මගේ බ්‍රව්සරය එය භාවිතා කිරීමට.

පියවර 1: ගොනුවක් සාදන්න උදා: *.proxy.pac*කොහේ හරි (මම මගේ $homeෆෝල්ඩරය භාවිතා කරමි )

පියවර 2: මෙම කේතය අලවන්න (උදාහරණය වරාය 8000 සමඟ):

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

පියවර 3 : ඔබගේ බ්‍රව්සරය මෙම PAC ගොනුව භාවිතා කරන්න.

PAC සහ Firefox සඳහා යූ ටියුබ් වීඩියෝව

පියවර 4 : දැන් ඔබට ප්‍රවේශ වීමෙන් ඔබගේ යෙදුම පරීක්ෂා කළ හැකිය:http://mysubdomain.localhost/

පියවර 5: භුක්ති විඳින්න :)


3
සමහර විට මෙය ඔබගේ බ්‍රව්සරයට පමණක් බලපාන බව සඳහන් කිරීම වටී. වෙනත් වැඩසටහන් (වැනි wget, මෙයින් බලපෑමට ලක් නොවනු ඇත). එය ගැටළුවක් නොවේ, නමුත් සමහර විට මෙය සඳහන් කිරීම වඩා හොඳය.
විලෙම් වැන් ඔන්සෙම්

ඔබ .pac මාර්ගයට ගොස් ඔබ node.js සේවාදායකයක් ක්‍රියාත්මක කරන්නේ req.urlනම්, එය දැන් නිරපේක්ෂ URL එකක් වීම දැක ඔබ පුදුමයට පත් වනු ඇත . මෙය සිදු කර ඇත්තේ ඔබට සත්‍ය ප්‍රොක්සි සේවාදායකයක් ලිවීමට අවශ්‍ය යැයි උපකල්පනය කර ඇති නමුත්, නිදොස් කිරීම සඳහා / etc / ධාරක ඇතුළත් කිරීම් නැවැත්වීමේ මාර්ගයක් ලෙස ඔබ මෙම තාක්‍ෂණයට පැමිණියේ නම් එය පුදුමයකි. මා ගිය මාර්ගයේම යා හැකි අයට FYI.
ටොම් බුටෙල්

5

මම මගේ පැරණි ව්‍යාපෘතියක් සකස් කර ඇත්තෙමි.

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

අවශ්‍යතා:

  • avahi සහ python-avahi ස්ථාපනය කළ හැකි linux
  • .local වසම් සමඟ ඔබ හොඳින් සිටී (avahi වෙනත් කිසිදු ආකාරයකට සහාය නොදක්වයි)

Dnsmasq හෝ python dns proxy භාවිතා කිරීමෙන් ලැබෙන වාසි:

  • ඔබේ දේශීය ජාලයේ අනෙකුත් avahi / bonjour භාවිතා කරන්නන්ට ඔබ විසින් නිර්මාණය කරන ලද සහ ජාලයට ප්‍රකාශයට පත් කරන අන්වර්ථ නාමයන් විසඳා ගත හැකිය (5353 වරායට ප්‍රවේශ වීමට ඔබට ඉඩ සලසයි)

4

ඔබට ආදේශක කාඩ්පතක් භාවිතා කළ නොහැක /etc/hosts.

BIND, ගොඩනඟන ලද නමුත් අක්‍රීය DNS සේවාදායකය සහ අපාචේ භාවිතයෙන් OS X හි ඉටු කර ගත හැකි ආකාරය පිළිබඳ හොඳ ගමනක් සඳහා මෙහි බලන්න .


5
අපාචේට උප ඩොමේන් සමඟ කිසිදු සම්බන්ධයක් නැත.
නිර්නාමික

4

කිසිවක් ස්ථාපනය කිරීමකින් තොරව මෙම ඩීඑන්එස් පදනම් කරගත් විසඳුම මගේ නඩුවේ පරිපූර්ණව ක්‍රියාත්මක විය: https://gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (මැක් ඕඑස්එක්ස් 10.9)


මැක් ඕඑස්එක්ස් සඳහා එවැනි පුදුමාකාර විසඳුමක්.
iDev247

මළ සබැඳිය, කරුණාකර ඔබේ සබැඳිය, විසඳුම යාවත්කාලීන කරන්න, නැතහොත් යම් ආකාරයකින් මෙම පිළිතුර අවලංගු කරන්න. චියර්ස්.
එරික් හොඩොන්ස්කි

සිදු විය (උපස්ථය එකතු කරන ලදි)
ෆෙඩිර් රයික්ටික්

3

ඔබ භාවිතා කිරීමට අවශ්ය නම්, dnsmasqසමග NetworkManagerඔබට හැකි (හෝ ඊටත් යුතු?) ආරම්භ dnsmasqසිට NetworkManagerඑකතු කිරීම මඟින්

dns=dnsmasq

වෙත /etc/NetworkManager/NetworkManager.conf. එවිට dnsmasq වින්‍යාසය වෙත ගොස් /etc/NetworkManager/dnsmasq.confහෝ /etc/NetworkManager/dnsmasq.d/ප්‍රතිචාර දක්වයි.


2

කෙටි පිළිතුර:

ඔබගේ / etc / host / file ඔබට ආදේශක කාඩ්පත් හෝ වරාය අංක භාවිතා කිරීමට ඉඩ නොදේ. ඔබගේ එක් එක් උප ඩොමේන් සඳහා එක් ප්‍රවේශයක් නිර්මාණය කිරීමට ඔබට අවශ්‍ය වනු ඇත


2
වරාය අංක සඳහන් කිරීමට ඔබට ඉඩ දෙන්නේ කුමක්ද? DNS AFAIK නොවේ.
ptman

2

කෙටි පිළිතුර නම් ඔබ එසේ නොකරයි. දීර් answer පිළිතුර නම්, ඔබ සැබවින්ම සාක්ෂාත් කර ගැනීමට අපේක්ෂා කරන දෙය පිළිබඳව ඔබ පැහැදිලි විය යුතුය, මන්ද සමහර විට වඩා හොඳ ක්‍රමයක් සහ එය සාක්ෂාත් කර ගැනීමට වෙනත් ක්‍රමයක් ඇත.

වෙබ් සත්කාරකත්වය සඳහා (එය වෙනත් ආකාරයකින් භාවිතා කරනු මා දැක නැත) අථත්‍ය සත්කාරක දැනුවත් වෙබ් සේවාදායකයක් සමඟ ඒකාබද්ධව DNS හි සිදු කෙරේ. වයිල්ඩ්කාඩ් ඩීඑන්එස් වාර්තා (විකිපීඩියා) පිළිබඳ වැඩි විස්තර සඳහා , සහ බයිල්ඩ් සහ අපාචේ භාවිතා කරමින් ලිනක්ස් සඳහා අපාචේ සහ බයින්ඩ් සමඟ වයිල්ඩ්කාඩ් සත්කාරකත්වය සපයයි .

නරකම දෙය නම්, මම හිතන්නේ ඔබට දේශීය ඩීඑන්එස් සේවාදායකයක් භාවිතා කළ හැකිය.


2

මෙම විෂය සඳහා පොදු කාර්යයක් වන්නේ නාමාවලි උප ඩොමේන් වෙත සිතියම් ගත කිරීමයි. ඒ සඳහා ඉතා සරල ක්‍රමයක් නම්, නාමාවලි මත පදනම් වූ ඇතුළත් කිරීම් ස්වයංක්‍රීයව ධාරක ගොනුවට එකතු කිරීමයි:

#! / usr / bin / python

ආනයන os

hostFile = විවෘත ("/ etc / host", "a +");

lines = hostFile.readlines ()

os.listdir හි ගොනු නාමය සඳහා ('/ opt / subdomainDirs'):

    entryExists = අසත්‍යය
    පේළි සඳහා:
        ගොනුවේ නම පේළියේ නම්:
            entryExists = ඇත්ත  

    ඇතුළත් නොවන්නේ නම්:
        hostFile.write ("127.0.0.1" + fileName + ".localhost \ n");

2

මෙම ප්‍රශ්නයට අවසාන පිළිතුර ලෙස මා සලකන දෙයට ස්තූතියි, මට අදහස් දැක්විය හැකි යැයි සිතමි, නමුත් මුල් ඉලක්කය සපුරා ගැනීමට උත්සාහ කරන අය සඳහා වන සම්පූර්ණ වින්‍යාසය මෙන්න (ආදේශක කාඩ්පත් සියල්ලම එකම කේත පදනමක් වෙත යොමු කරයි - කිසිවක් ස්ථාපනය නොකරන්න, dev පරිසරය එනම් , XAMPP)

ධාරක ගොනුව (ඇතුළත් කිරීමක් එක් කරන්න)

ගොනුව: / etc / host (කවුළු නොවන)

127.0.0.1   example.local

httpd.conf වින්‍යාසය (vhosts සක්‍රීය කරන්න)

ගොනුව: /XAMPP/etc/httpd.conf

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

httpd-vhosts.conf වින්‍යාසය

ගොනුව: XAMPP / etc / extra / 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>

අපාචේ නැවත ආරම්භ කරන්න

pac ගොනුව සාදන්න:

ඔබට අවශ්‍ය ඕනෑම තැනක save.pac ලෙස සුරකින්න, පසුව ගොනුව බ්‍රව්සරයේ ජාලය> ප්‍රොක්සි> ස්වයංක්‍රීය වින්‍යාස සැකසීම් තුළ පටවන්න (ඔබ මෙය වෙනස් කරන්නේ නම් නැවත පූරණය කරන්න)

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

2

dnsmasq මා වෙනුවෙන් වැඩ කළා, මට අමතර පියවර කිහිපයක් ගැනීමට සිදු විය.

සම්පූර්ණ ක්‍රියා පටිපාටිය මෙන්න:

  1. Prepend /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 මම ඔබ දෙස බලමි)
මිස්මීස්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.