Как поместить подстановочный знак в /etc/hosts?

Недавно я хотел указать все поддомены для тестового домена, скажем, example.com на локальный хост. Есть ли способ указать все запросы на *.example.com для разрешения на 127.0.0.1


person aamir    schedule 07.12.2013    source источник
comment
serverfault.com/questions/118378/   -  person milan    schedule 26.02.2019


Ответы (3)


Бывает, что файл /etc/hosts не поддерживает записи подстановочных знаков.

Вам придется использовать другие службы, такие как dnsmasq. Чтобы включить его в dnsmasq, просто отредактируйте dnsmasq.conf и добавьте следующую строку:

address=/example.com/127.0.0.1
person aamir    schedule 07.12.2013
comment
для записи с подстановочными знаками - address=/.example.com/127.0.0.1 - person vivex; 31.03.2015
comment
@Vivek Это не обязательно - person Rahil Wazir; 23.04.2015
comment
Для установки Ubuntu dnsmasq см. эту. - person lemonsqueeze; 14.05.2015
comment
Для настройки macosx очень полезно использовать passingcuriosity.com/2013/dnsmasq-dev-osx. . - person aamir; 08.06.2015
comment
rahilwazir, на самом деле, если вам не нужны все субдомены. # также работает как подстановочный знак. Лично я использую `address=/dev#.example.com/127.0.0.1, чтобы заставить работать dev123.example.com и т. д. - person Ray Foss; 28.10.2015
comment
dnsmasq не может этого сделать. - person DisplayName; 14.12.2015
comment
Почему-то dnsmasq вообще не работает. Есть ли способ убедиться, что я настроил что-то правильно? - person Romulus Urakagi Ts'ai; 30.11.2016
comment
Я не знаю этот инструмент, и он делает много вещей, кроме простой замены файлов hosts. Не могли бы вы расширить свой ответ, сказав, как включить dnsmasq или как сделать так, чтобы изменения вступили в силу? Я сделал именно то, что вы упомянули, и ничего не получил, спасибо. - person santiago arizti; 08.06.2017
comment
Это прекрасно работает с dnsmasq. Просто помните, что вы должны перезапустить его после изменения конфигурации. Например. sudo systemctl restart dnsmasq. - person Forivin; 14.09.2017
comment
Есть ли способ сделать это без создания одного и того же файла с разными именами каждый раз? - person leetbacoon; 03.10.2019

Вот конфигурация для тех, кто пытается достичь первоначальной цели (все подстановочные знаки указывают на одну и ту же кодовую базу - ничего не устанавливать, среда разработки, т.е. XAMPP)

файл hosts (добавить запись)

файл: /etc/hosts (не для Windows)

127.0.0.1   example.local

Конфигурация httpd.conf (включить виртуальные хосты)

файл: /XAMPP/etc/httpd.conf

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

Конфигурация httpd-vhosts.conf

файл: XAMPP/etc/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    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-файл:

сохраните как любой.pac, где хотите, а затем загрузите файл в настройках браузера network>proxy>auto_configuration (перезагрузите, если вы измените это)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
person Daniel Jordi    schedule 19.08.2014
comment
Не работает для файла hosts в Windows. Он будет принимать только www.example.com - person Andre Figueiredo; 22.04.2015
comment
это работает в Windows, используя файл pac в Firefox. Я тестировал это на нескольких машинах с Windows. файл hosts требует только одну запись, файл pac обрабатывает субдомены. - person Daniel Jordi; 23.04.2015
comment
Первоначальный вопрос, насколько я понимаю, вообще не об apache, а на сетевом уровне, поэтому я думаю, что ваш ответ не соответствует сути: / - person enTropy; 20.02.2017
comment
для использования файла pac в Internet Explorer см.: campus.barracuda.com/product /websecurityservice/article/WSS/ - person saeed arab sheybani; 16.08.2017
comment
Обратите внимание, что при использовании pac-файла для прокси-запросов к хосту (например, localhost) веб-сервер, такой как Apache, будет использовать полный URL-адрес (включая протокол и имя хоста) в переменной REQUEST_URI, а не только компонент пути. - person JSchirrmacher; 15.10.2017
comment
Хотя это довольно изобретательно, это не работает для веб-сокетов. - person Emsi; 28.08.2020
comment
Порт отсутствует. Я бы предоставил: 80, чтобы быть уверенным. Или еще, не знаю, может быть, браузер выбрал бы 3128 - person OCTAGRAM; 19.12.2020

используйте dnsmasq

притворяясь, что вы используете дистрибутив на основе Debian (ubuntu, mint..), проверьте, установлен ли он с помощью

(sudo) systemctl status dnsmasq

Если он просто отключен, запустите его с помощью

(sudo) systemctl start dnsmasq

Если вам необходимо установить его, напишите

(sudo) apt-get install dnsmasq

Чтобы определить домены для разрешения, отредактируйте /etc/dnsmasq.conf следующим образом.

address=/example.com/127.0.0.1

для разрешения *.example.com

<сильный>! Вам нужно перезагрузить dnsmasq, чтобы изменения вступили в силу!

systemctl reload dnsmasq
person Immanuel    schedule 18.04.2018