Вопрос: В моем / etc / hosts / файле на Linux / OSX, как мне сделать поддомен подстановки?


Мне нужно проверить поддомены на моем локальном хосте. Как я могу эффективно получить этот результат добавления *.localhost.com к моему /etc/hosts/ файл?

Если это невозможно, как мне решить эту проблему? Мне нужно проверить поддомены подстановочных знаков на моем локальном сервере. Это devanserver Django, может ли сервер Django dev обрабатывать поддомены? Может ли какая-то другая часть программного обеспечения / маршрутизации дать мне конечный результат, который я хочу?


145
2018-03-02 16:43


Источник


Принадлежит суперпользователю? - Paul R
Я знаю, что люди говорят, что это невозможно! Но как мне это сделать? Что-то вне / etc / hosts / я могу использовать, чтобы получить эффект. Я тестирую сервер разработки. - MikeN
на суперпользователя: unix.stackexchange.com/questions/3352/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
Поскольку большинство ответов сосредоточены на вашем первом вопросе (подстановочные знаки поддомена localhost), я отвечу на ваш вторичный вопрос в виде комментария: да, сервер Django dev отлично способен обрабатывать субдомены localhost, вам просто нужно убедить ваш браузер и вашу ОС отправить трафик (используя одно из следующих решений ниже)! - hheimbuerger


Ответы:


Я написал прокси-сервер dns в Python. Он будет читать подстановочные записи в / etc / hosts. Глянь сюда: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py


40
2018-05-02 09:30



Это потрясающе! Я давно искал такое простое решение (работая на OSX Mavericks BTW) - Billy Moon
теперь, если бы мы могли только pip install Это :) - metakermit
Я установил это, сделал все и запустил, но он не блокирует сайты. - DisplayName
Не могу этого сделать достаточно. Мне нужно было это навсегда, наткнулся на эту жемчужину вопроса и ответа, и я немного хакер Python, и это аккуратный лакомый кусочек. Спасибо, что поделился! - Farley


устанавливать Dnsmasq (Я делаю это на всех своих настольных компьютерах Linux в любом случае в кэше DNS). В dnsmasq.conf добавьте строку:

address=/localhost.com/127.0.0.1

140
2018-03-03 02:37



Brilliant! Примечание для пользователей Mac, это действительно так просто: 1. sudo port install dnsmasq 2. Редактировать /opt/local/etc/dnsmasq.conf 3. sudo port load dnsmasq - tomc
OSX с варевом: то же, что и выше, но заварить установить dnsmasq - Matt Humphrey
fyi brew> port (предложение re @MattHumphrey) - electblake
Этот пример не работает для меня, возможно, потому, что я использую vagrantup.com для местной службы. Не волнуйтесь, я уже изменил IP на правильный 192.168.50.11 но DNS не разрешает. Любые идеи, этот пример правильный для «non-127.0.0.1» IP? - Brian
Отличный совет. Для рабочего стола Ubuntu 14.04 (который по умолчанию запускает dnsmasq), создайте файл с именем /etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf и поместите линию address=/localhost.com/127.0.0.1 в нем, затем перезапустите. - user38397


Невозможно указать подстановочные знаки в /etc/hosts файл. Либо укажите требуемые имена хостов явно, либо альтернативно настройте локальный сервер имен с соответствующими правилами.


52
2018-03-02 16:46





Вам нужно настроить DNS-сервер и каждый клиент используйте его для разрешения. Сам сервер может быть чем-то «легким», как Dnsmasq или так тяжело, как BIND,


14
2018-03-02 20:28



+1 для dnsmasq, который действительно хорошо документирован и прост в использовании - David Schmitt
dnsmasq не может этого сделать. - DisplayName
Какая часть поведения, описанного в --address= раздел справочной страницы dnsmasq.conf не охватывает описанный выше вариант использования? - Gerald Combs


Простой рабочий процесс (ничего не нужно устанавливать)

Мне лично нравится создать файл PAC для этого и заставить мой браузер просто использовать его.

Шаг 1: создать файл, например: *.proxy.pac* где-то (я использую свои $home папка)

Шаг 2: вставьте этот код (пример с портом 8000):

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

Шаг 3: Сделайте ваш браузер использовать этот файл PAC.

Видео Youtube для PAC и Firefox 

Шаг 4: Теперь вы можете протестировать свое приложение, обратившись к: http://mysubdomain.localhost/

Шаг 5: Наслаждаться :)


7
2018-03-02 16:47



Возможно, стоит упомянуть, что это повлияет только на ваш браузер. Другие программы (например, wget, на это не повлияет). Это само по себе не проблема, но, возможно, лучше упомянуть об этом. - Willem Van Onsem


Вы не можете использовать подстановочный знак в /etc/hosts,

Взгляни Вот для хорошего пошагового руководства по выполнению на OS X с использованием BIND, встроенного, но неактивного DNS-сервера и Apache.


3
2018-04-16 09:11



Apache не имеет ничего общего с субдоменами. - Anonymous


Я прибрал старый проект:

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

требования:

  • linux, где доступны avahi и python-avahi
  • вы в порядке с .local доменами (avahi не поддерживает какой-либо другой вид)

Преимущества использования dnsmasq или прокси-сервера python dns:

  • другие пользователи avahi / bonjour в вашей локальной сети могут разрешить псевдонимы, которые вы создаете и анонсируете в сети (при условии, что вы разрешаете доступ к порту 5353)

3
2018-03-06 22:02





Это решение на базе DNS отлично работало в моем случае, без необходимости устанавливать что-либо: https://gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)


3
2018-03-02 20:20



Такое замечательное решение для Mac OSX. - iDev247
Dead link, пожалуйста, обновите свою ссылку, свое решение или каким-то образом откажитесь от ответа на этот вопрос. Приветствия. - Relic
Готово (добавлено резервное копирование) - Fedir RYKHTIK


Короткий ответ: нет. Более длинный ответ: вам нужно быть более четким в том, чего вы хотите достичь, потому что, возможно, есть лучший способ и другой способ его достижения.

Для веб-хостинга (я никогда не видел, чтобы он использовался иначе) выполняется в DNS в сочетании с веб-сервером, поддерживающим виртуальный хостинг. Для получения дополнительной информации о подстановочные DNS-записи (Википедия) и статья Подстановочный хостинг с Apache и Bind для Linux с использованием bind и Apache.

В худшем случае, вы можете использовать локальный DNS-сервер, я полагаю.


2
2018-02-13 13:35





Если вы хотите использовать dnsmasq с NetworkManager вы можете (или даже обязательно?) начать dnsmasq из NetworkManager добавлением

dns=dnsmasq

в /etc/NetworkManager/NetworkManager.conf, Тогда конфигурация dnsmasq переходит в /etc/NetworkManager/dnsmasq.conf или /etc/NetworkManager/dnsmasq.d/ соответственно


2
2018-04-24 17:32





Общей задачей для этого предмета является сопоставление каталогов с субдоменами. Очень простой способ заключается в том, чтобы автоматически добавлять записи на основе каталога в файл hosts:

#! / USR / бен / питон

import os

hostsFile = open ("/ etc / hosts", "a +");

lines = hostsFile.readlines ()

для fileName в os.listdir ('/ opt / subdomainDirs'):

    entryExists = False
    для строк в строках:
        если fileName в строке:
            entryExists = True

    если не entryExists:
        hostsFile.write ("127.0.0.1" + имя_файла + ".localhost \ n");

2
2017-08-19 19:50