Подстановочные знаки в файле хоста Windows

windows apache dns hosts virtual-hosts

184598 просмотра

20 ответа

Я хочу настроить свою локальную машину разработки так, чтобы любые запросы *.localперенаправлялись на localhost. Идея состоит в том, что когда я разрабатываю несколько сайтов, я могу просто добавить vhosts к вызываемому Apache site1.localи site2.localт. Д. И разрешить им все разрешить localhost, в то время как Apache соответственно обслуживает другой сайт.

Я на Windows XP.

Я пытался добавить

127.0.0.1       *.local

к моему c:\windows\system32\drivers\etc\hostsфайлу тоже пробовал:

127.0.0.1       .local

Ни один из которых, кажется, не работает.

Я знаю, что могу настроить их на разные номера портов, но это очень сложно, так как трудно вспомнить, какой порт какой.

Я не хочу настраивать локальный DNS-сервер или что-то сложное, какие-либо предложения?

Автор: EvilPuppetMaster Источник Размещён: 17.05.2019 03:17

Ответы (20)


405 плюса

Решение

Акриловый DNS Proxy (бесплатный, с открытым исходным кодом) делает свою работу. Он создает прокси-сервер DNS (на вашем собственном компьютере) со своим собственным файлом hosts. Файл hosts принимает подстановочные знаки.

Скачать с официального сайта

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home

Настройка акрилового DNS-прокси

Чтобы настроить Acrylic DNS Proxy, установите его по приведенной выше ссылке, затем перейдите по ссылке:

  1. Начните
  2. программы
  3. Акриловый DNS Proxy
  4. конфиг
  5. Редактировать файл пользовательских хостов (AcrylicHosts.txt)

Добавьте следующие строки в конце файла:

127.0.0.1   *.localhost
127.0.0.1   *.local
127.0.0.1   *.lc

Перезапустите службу Acrylic DNS Proxy:

  1. Начните
  2. программы
  3. Акриловый DNS-прокси
  4. конфиг
  5. Перезапустите Акриловый Сервис

Вам также нужно будет изменить настройки DNS в настройках сетевого интерфейса:

  1. Начните
  2. Панель управления
  3. Сеть и Интернет
  4. Сетевые соединения
  5. Свойства подключения по локальной сети
  6. TCP / IPv4

Установите «Использовать следующий адрес DNS-сервера»:

Preferred DNS Server: 127.0.0.1

Если вы затем объедините этот ответ с ответом jeremyasnyder (используя VirtualDocumentRoot), вы можете автоматически настроить домены / виртуальные хосты, просто создав каталог.

Автор: Petah Размещён: 14.03.2012 04:17

78 плюса

Чтобы ответить на ваш вопрос, вы не можете использовать подстановочные знаки в файле hosts под Windows.

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

http://postpostmodern.com/instructional/a-smarter-mamp/

По сути, краткая сводка, основанная на моих настройках, добавьте в файл apache.conf следующее:

 LoadModule vhost_alias_module modules/mod_vhost_alias.so

 NameVirtualHost *:80

  <Directory "/xampp/sites">
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all 
  </Directory>

  <VirtualHost *:80>
      VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
  </VirtualHost>

Это позволяет мне добавить запись вроде:

127.0.0.1       test.dev

а затем создайте каталог c: \ xampp \ sites \ dev \ test и поместите туда необходимые файлы, и он просто работает.

Другой вариант - использовать <Directory>теги в apache.conf и ссылаться на страницы из http: // localhost / project / .

Автор: jeremyasnyder Размещён: 07.11.2008 01:42

29 плюса

Я не думаю, что это возможно.

В любом случае вам придется изменять записи виртуального корня apache каждый раз, когда вы добавляете новый сайт и местоположение, поэтому синхронизировать новое имя с файлом vhost Windows не составляет особого труда.

Обновление: пожалуйста, проверьте следующий ответ и комментарии к этому ответу. Этому ответу 6 лет, и он больше не правильный.

Автор: Biri Размещён: 26.09.2008 07:41

4 плюса

Я нашел сообщение об использовании файла Windows Hosts, в котором также говорится: «Не допускаются подстановочные знаки».

Раньше я только добавлял дополнительные записи в файл hosts, потому что (как уже было сказано), это не так уж много дополнительной работы, когда вы уже редактируете конфигурационный файл apache.

Автор: Kevin Hakanson Размещён: 27.09.2008 11:58

4 плюса

Редактирование файла hosts менее проблем, когда вы запускаете «ipconfig / flushdns» из командной строки Windows вместо перезагрузки компьютера.

Автор: Joe Размещён: 17.10.2010 05:43

4 плюса

Чтобы добавить к замечательным предложениям, уже здесь, XIP.IO является фантастическим DNS-сервером с подстановочными знаками, который доступен для всех.

      myproject.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
  other.project.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
   other.machine.10.0.0.1.xip.io  -- resolves to -->   10.0.0.1

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

Если вы объедините это с некоторыми настройками Apache, упомянутыми в других ответах, вы можете потенциально добавить VirtualHosts с нулевой настройкой .

Автор: Simon East Размещён: 20.03.2015 03:37

3 плюса

Вы можете попросить своего сетевого администратора настроить домен для вас (например, evilpuppetmaster.hell) и использовать там подстановочный знак, чтобы все (* .evilpuppetmaster.hell ') разрешалось по вашему IP.

Автор: Stu Thompson Размещён: 26.09.2008 08:02

3 плюса

У нас это работает с использованием подстановочного DNS на нашем локальном DNS-сервере: добавьте Aзапись что-то вроде*.local -> 127.0.0.1

Я думаю, что в настройках вашей сети должен быть выбранный суффикс домена в списке поиска суффиксов домена для компьютеров в сети, поэтому вы можете заменить .localего внутренним доменом вашей компании (например .int), а затем добавить субдомен, .localhost.intчтобы сделать его понятным. для чего это.

Таким образом, *.localhost.intбудет разрешено 127.0.0.1для всех в сети, и настройки файла конфигурации для всех разработчиков будут "просто работать", если конечные точки зависают от этого субдомена, например site1.localhost.int, site2.localhost.intЭто в значительной степени схема, которую мы ввели.

dnsmasq также выглядит красиво, но я еще не пробовал: http://ihaveabackup.net/2012/06/28/using-wildcards-in-the-hosts-file/

Автор: Matthew Skelton Размещён: 23.07.2013 01:46

2 плюса

Я написал простой прокси-сервер DNS в Python. Он будет читать записи с подстановочными знаками в / etc / hosts. Смотрите здесь: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py

Я тестировал в Linux и Mac OS X, но еще не в Windows.

Автор: marlonyao Размещён: 02.05.2011 09:32

2 плюса

Вы можете попробовать AngryHosts , который предоставляет способ поддержки подстановочных знаков и регулярных выражений. На самом деле, это программное обеспечение для улучшения файлов и управления хостами.
Больше возможностей можно увидеть @ http://angryhosts.com/features/

Автор: iloahz Размещён: 05.03.2012 01:41

2 плюса

Я использую DNSChef, чтобы сделать это.

https://thesprawl.org/projects/dnschef/

Вы должны загрузить приложение, в Linux или Mac вам нужен Python для его запуска. У Windows есть свой собственный exe.

Вы должны создать INI-файл с вашими записями DNS, например

[A]
*.google.com=192.0.2.1
*.local=127.0.0.1
*.devServer1.com=192.0.2.3

Затем вы должны запустить приложение DNS с правами администратора

sudo python dnschef.py --file myfile.ini -q

или в окнах

runas dnschef.exe --file myfile.ini -q

Наконец, вам нужно настроить в качестве единственного DNS локальную хост-среду (сеть, интерфейс, DNS или аналогичную или в linux /etc/resolv.conf).

это оно

Автор: casivaagustin Размещён: 28.02.2014 02:07

2 плюса

Я сделал этот простой инструмент, чтобы занять место хозяев. Регулярные выражения поддерживаются. https://github.com/stackia/DNSAgent

Пример конфигурации:

[
    {
        "Pattern": "^.*$",
        "NameServer": "8.8.8.8"
    },
    {
        "Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
        "Address": "203.66.168.119"
    },
    {
        "Pattern": "^.*\\.cn$",
        "NameServer": "114.114.114.114"
    },
    {
        "Pattern": "baidu.com$",
        "Address": "127.0.0.1"
    }
]
Автор: Stackia Размещён: 04.03.2015 04:04

0 плюса

Я не смог найти запрет на запись, но по соглашению файл хостов Windows близко следует файлу хостов UNIX, и вы не можете помещать в этот файл ссылки на имена хостов с подстановочными знаками.

Если вы читаете справочную страницу, там написано:

DESCRIPTION
     The hosts file contains information regarding the known hosts on the net-
     work.  For each host a single line should be present with the following
     information:

           Internet address
           Official host name
           Aliases

Хотя это говорит,

     Host names may contain any printable character other than a field delim-
     iter, newline, or comment character.

это не так с практической точки зрения.

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

Обходной путь заключается в том, чтобы создать все записи заранее, возможно, использовать скрипт, чтобы поместить пару сотен записей одновременно.

Автор: benc Размещён: 05.12.2008 12:48

0 плюса

@petah и Acrylic DNS Proxy - лучший ответ, и в конце он ссылается на возможность создания нескольких сайтов с использованием Apache, который @jeremyasnyder описывает чуть ниже ...

... однако в нашем случае мы тестируем мультитенантную хостинговую систему, и поэтому большинство доменов, которые мы хотим протестировать, идут на одно virtualhostи то же , в то время как пара других направляется в другое место.

Так что в нашем случае вы просто используете подстановочные знаки regex в ServerAliasдирективе, вот так ...

ServerAlias *.foo.local
Автор: oucil Размещён: 16.01.2014 04:50

0 плюса

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

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

файл:% SystemRoot% \ system32 \ drivers \ etc \ hosts

127.0.0.1   example.local

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

file: \ 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>

перезапустить Apache

создать файл pac:

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

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
Автор: Daniel Jordi Размещён: 19.08.2014 07:56

0 плюса

Для этого вы можете использовать echoipdns ( https://github.com/zapty/echoipdns ).

При запуске echoipdns local все запросы для поддоменов .local перенаправляются на 127.0.0.1, поэтому любой домен с xyz.local и т. Д. Преобразуется в 127.0.0.1. Вы можете использовать любой другой суффикс, также просто замените local именем, которое вы хотите.

Echoipdns является еще более мощным, когда вы хотите использовать свой URL с других машин в сети, вы все равно можете использовать его с нулевой конфигурацией.

Например, если IP-адрес вашего компьютера 192.168.1.100, вы можете использовать доменное имя xyz.192-168-1-100.local, которое всегда будет разрешаться до 192.168.1.100. Эту магию делают echoipdns, просматривая IP-адрес во второй части имени домена и возвращая тот же IP-адрес в DNS-запросе. Вам нужно будет запустить echoipdns на машине, с которой вы хотите получить доступ к удаленной системе.

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

Таким образом, это существенно упрощает разработку DNS на основе подстановочного домена для локальной и командной среды.

echoipdns работает на Mac, Linux и Windows.

ПРИМЕЧАНИЕ: я автор для echoipdns.

Автор: arva Размещён: 09.01.2015 10:12

0 плюса

Конфигурация автоматического субдомена config nginx с помощью Acrylic DNS Proxy

файл auto.conf для вашей папки сайтов nginx

server {
    listen 80;
    server_name ~^(.*)\.example.com;
    root /var/www/html/$1/public;   

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log  /var/log/nginx/$1.error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
       try_files $uri /index.php =404;
       fastcgi_pass php-fpm:9000;
       fastcgi_index index.php;
       fastcgi_buffers 16 16k;
       fastcgi_buffer_size 32k;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Добавьте в файл Acrylic hosts 127.0.0.1 example.com *.example.comи перезапустите сервис Acrylic. $ 1 - имя вашего субдомена Установить вместо root / var / www / html / $ 1 / public; путь вашего проекта

Автор: Davron Achilov Размещён: 29.01.2019 02:21

-1 плюса

Вы можете использовать динамический DNS-клиент, такой как http://www.no-ip.com . Затем с помощью внешнего DNS-сервера CNAME * .mydomain.com перейдите на mydomain.no-ip.com.

Автор: Ben Manns Размещён: 30.04.2009 09:03

-1 плюса

Хотя вы не можете добавить подстановочный знак, подобный этому, вы можете добавить полный список сайтов, которые вам нужны, по крайней мере для тестирования, которые мне подходят, в файле hosts вы просто добавляете:

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...

Автор: BlackTigerX Размещён: 28.06.2012 08:21

-3 плюса

Apache для прослушивания на многих портах также является альтернативой.

Автор: BFF Размещён: 16.06.2009 09:35
Вопросы из категории :
32x32