Windows 호스트 파일의 와일드 카드


289

요청이 (으) *.local로 리디렉션 되도록 로컬 개발 시스템을 설정하고 싶습니다 localhost. 아이디어는 내가 여러 사이트를 개발할 때, 난 그냥 아파치가 호출에 가상 호스트를 추가 할 수 있습니다 site1.local, site2.local등, 그들에게 모든 결의를 가지고 localhost아파치가 따라 다른 사이트를 제공하면서.

Windows XP를 사용하고 있습니다.

나는 추가를 시도했다

127.0.0.1       *.local

c:\windows\system32\drivers\etc\hosts파일에, 또한 시도 :

127.0.0.1       .local

둘 다 작동하지 않는 것 같습니다.

다른 포트 번호로 설정할 수 있지만 어떤 포트가 어떤 포트인지 기억하기 어렵 기 때문에 고통 스럽습니다.

로컬 DNS 서버를 설정하거나 어려운 것을 제안하고 싶지 않습니까?


1
anysubdomain.reconn.co.uk를 해결 방법으로 사용하십시오 (온라인 인 경우). 항상 로컬 호스트를 가리 킵니다 (아래 답변 참조).
Paul Grimshaw 2016 년

apache vhosts ServerName을 구문 분석하고 hosts 파일을 업데이트하는 스크립트는 어떻습니까?
Elvis Ciotti

1
* .local에는 특별한 의미가 있으므로 존재하지 않는 것을 사용해야합니다. 나는 그것이 진짜라고 생각하지 않기 때문에 * .dev를 사용합니다.
WraithKenny

답변:


431

아크릴 DNS 프록시 (무료, 오픈 소스)가 작업을 수행합니다. 자체 호스트 파일을 사용하여 자신의 컴퓨터에 프록시 DNS 서버를 만듭니다. 호스트 파일은 와일드 카드를 허용합니다.

공식 웹 사이트에서 다운로드

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

아크릴 DNS 프록시 구성

아크릴 DNS 프록시를 구성하려면 위의 링크에서 설치하십시오.

  1. 스타트
  2. 프로그램들
  3. 아크릴 DNS 프록시
  4. 구성
  5. 사용자 정의 호스트 파일 편집 (AcrylicHosts.txt)

파일 끝에 다음 줄을 추가하십시오.

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

아크릴 DNS 프록시 서비스를 다시 시작하십시오.

  1. 스타트
  2. 프로그램들
  3. Acrilic DNS 프록시
  4. 구성
  5. 아크릴 서비스 재시작

또한 네트워크 인터페이스 설정에서 DNS 설정을 조정해야합니다.

  1. 스타트
  2. 제어판
  3. 네트워크와 인터넷
  4. 네트워크 연결
  5. 로컬 영역 연결 속성
  6. TCP / IPv4

"다음 DNS 서버 주소 사용"을 설정하십시오.

Preferred DNS Server: 127.0.0.1

그런 다음이 답변을 jeremyasnyder의 답변과 함께 사용 VirtualDocumentRoot하면 (을 사용하여 ) 디렉토리를 만들면 도메인 / 가상 호스트를 자동으로 설정할 수 있습니다.


12
"사용자 지정 호스트 파일"은 AcrylicConfiguration.ini가 아니라 AcrylicHosts.txt입니다. 어쩌면 그것은 분명해야하지만 잠시 동안 나를 혼란스럽게했습니다.
mhenry1384

@Petah-이 정확한 구성은 와일드 카드 도메인에서 작동했지만 중지되었지만 이유를 알 수 없습니다. 모든 요청이 "이 페이지를 사용할 수 없습니다"를 반환합니다. 아크릴을 다시 시작하고 모든 캐시를 재설정합니다. 다른 방법은 무엇입니까?
SB2055

1
@ SB2055 네트워크 속성의 DNS 설정이 여전히 올바른지 확인하십시오.
Petah

아크릴은 네트워크 환경이 자주 바뀌는 상황에는 적합하지 않습니다. Google의 퍼블릭 DNS 서버는 네트워크 내에서 실제 컴퓨터 이름을 확인하지 못하지만 한 네트워크에서이를 수정할 수는 있지만 다른 네트워크로 이동할 때 내부 컴퓨터 이름을 확인할 수는 없습니다. 이것은 특히 고통 스러울 수 있습니다. 그러나 나는 아크릴에 관해 알아야 할 모든 것을 모른다고 지적해야합니다.
Alex Dresko

이 작업이 VM 내에서 수행되는 경우 PrimaryServerAddress호스트 파일이 아닌 구성의 기본 설정 8.8.8.8이 호스트에서 제공 하는 설정으로 변경되어야 합니다. VirtualBox에서 이것은입니다 10.0.2.3.
mightyiam

80

질문에 대답하기 위해 Windows의 hosts 파일에서 와일드 카드를 사용할 수 없습니다.

그러나 새로운 사이트가 작동하도록 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 / 의 페이지를 참조하는 것 입니다.


OSX에서 와일드 카드를 사용할 수 있습니까?
cjm2671

예를 사용하여 바인딩 - clintberry.com/2011/...
라이언 슈마허

30

나는 그것이 가능하다고 생각하지 않습니다.

어쨌든 새 사이트와 위치를 추가 할 때마다 아파치 virtualroot 항목을 수정해야하므로 새 이름을 Windows vhost 파일에 동기화하는 것은 큰 일이 아닙니다.

업데이트 : 다음 답변과이 답변에 대한 의견을 확인하십시오. 이 답변은 6 세이며 더 이상 수정되지 않습니다.


3
그러나 Nginx를 사용할 때 새로운 두 번째 레벨 도메인 그룹 인 * .localhost를 추가하기 위해 Nginx의 구성 파일을 변경할 필요가 없습니다. 호스트 파일의 마이너스입니다.
sergzach

8
그냥 당신이 다국어 웹 사이트가있을 때, 당신이있을 것을 지적하는 <가상 호스트>와 ServerAlias *.mydomain.localhost( *편집을 httpd.conf 새 언어를 추가 할 때마다에있는 '그래서 당신이 돈 것으로, 언어 코드 인); 그러나 여전히 하위 도메인을 hosts 파일에 추가해야하므로 위의 질문과 관련이 있습니다.
Benjamin

10
동적 가상 호스트는 여기서 키워드이며 Apache 및 Nginx와 같은 대부분의 서버에서 지원됩니다. 따라서 프로젝트를 생성 할 때마다 Apache 구성을 건드릴 필요가 없습니다.
Valentin Klinghammer

2
우리는 와일드 카드 가상 호스트도 가질 수 있습니다. hosts실제로 파일 로만 내려갑니다.
ericn

6

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 구성과 결합하면 설정0 인 VirtualHosts를 추가 할 수 있습니다 .


또한 LAN에 IP가있는 경우 팀 구성원에게 효과적입니다. 동일한 호스트 파일로 로컬 DNS 서버를 설치할 필요가 없습니다.
Tobias Uhmann

4

"와일드 카드가 허용되지 않습니다."라는 Windows 호스트 파일 사용에 관한 게시물을 찾았습니다 .

과거에는 호스트 파일에 추가 항목을 추가했습니다. (앞서 언급했듯이) 이미 아파치 구성 파일을 편집 할 때 그다지 많은 작업이 아니기 때문입니다.


hosts 파일을 오래 만들수록 요청을 해결하는 데 시간이 오래 걸립니다. 항목이 많으면 좋은 해결책이 아닙니다.
cchamberlain

4

컴퓨터를 다시 시작하지 않고 Windows 명령 프롬프트에서 "ipconfig / flushdns"를 실행하면 호스트 파일을 편집하는 것이 쉽지 않습니다.


1
브라우저 dns 캐시를 플러시하지 않지만 창을 플러시합니다. 따라서 브라우저가 DNS 캐싱을 해제 할 때까지 20-30 분 정도 기다려야합니다.
Jacob Melvad Jensen

3

네트워크 관리자에게 도메인을 설정하고 (예 : 'evilpuppetmaster.hell') 와일드 카드를 사용하여 모든 (* .evilpuppetmaster.hell ') IP로 해석되도록 와일드 카드를 만들 수 있습니다.


1
고마워하지만 이것은 가정용 개발자 서버에 있으며 DNS 또는 네트워크 관리자가 없습니다.
EvilPuppetMaster

좋아, 아마도 당신은 도메인에 접근 할 수 있거나 누군가를 알고 있습니까? 예 : * .evilpuppetmatser.arealdomain.com
Stu Thompson

실제로는 아닙니다. 그럼에도 불구하고 이것은 가정용 컴퓨터이므로 라우터가 인터넷에 연결할 때마다 새로운 IP를 얻습니다. 외부 DNS 서버는 도움이되지 않습니다.
EvilPuppetMaster

1
1) * .evilpuppetmatser.arealdomain.com이 127.0.0.1로 해결할 수없는 이유는 없습니다. 2) 외부 DNS 서버를 제안하지 않습니다. 실제 도메인에서 하위 도메인을 사용하는 것이 좋습니다. 기술적으로 누구나 누구나 server.evp.arealdomain.com을 해결할 수 있습니다.
Stu Thompson

3
* .127.0.0.1.xip.io와 같은 일부 대중들도있다 다른 사람
데이브 제임스 밀러

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/




2

DNSChef를 사용하고 있습니다.

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

Linux 또는 Mac에서 앱을 다운로드해야 실행하려면 Python이 필요합니다. Windows에는 자체 EXE 파일이 있습니다.

예를 들어 dns 항목으로 ini 파일을 작성해야합니다.

[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 또는 이와 유사한 또는 Linux /etc/resolv.conf)을 유일한 DNS로 설정해야합니다.

그게 다야


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"
    }
]

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 파일을 보는 코드는 와일드 카드 항목을 지원하지 않습니다.

해결 방법은 모든 항목을 미리 작성하는 것입니다. 스크립트를 사용하여 한 번에 수백 개의 항목을 넣을 수도 있습니다.


0

@petah와 아크릴 DNS 프록시가 가장 좋은 대답이며, 결국 그는 @jeremyasnyder가 조금 더 자세히 설명하는 Apache를 사용하여 다중 사이트를 수행하는 기능을 참조합니다 ...

...하지만 우리의 경우 다중 테넌트 호스팅 시스템 을 테스트하고 있으므로 테스트하려는 대부분의 도메인은 동일하게 이동 virtualhost하지만 다른 도메인 은 다른 곳으로 연결됩니다.

따라서 우리의 경우 ServerAlias지시문에 정규식 와일드 카드를 사용 하면됩니다.

ServerAlias *.foo.local

0

목표를 달성하려는 사람들을위한 전체 구성은 다음과 같습니다 (개발 환경의 와일드 카드, 즉 XAMPP-이 예에서는 모든 사이트가 동일한 코드베이스를 가리키는 것으로 가정)

호스트 파일 (항목 추가)

파일 : % SystemRoot % \ system32 \ drivers \ etc \ hosts

127.0.0.1   example.local

httpd.conf 구성 (vhost 활성화)

파일 : \ 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 파일 만들기 :

원하는 위치에 whatever.pac로 저장 한 다음 브라우저의 네트워크> 프록시> 자동 구성 설정에서 파일을로드합니다 (변경 한 경우 다시로드).

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

작동하지 않았지만 아직 PAC에 대해 모르지만이 줄은 'PROXY example.local'을 반환합니다. ' 브라우저에서 프록시로 사용할 프록시 ip : port를 반환하지 않습니까?
Ionut

0

이를 위해 echoipdns를 사용할 수 있습니다 ( https://github.com/zapty/echoipdns ).

echoipdns local .local 하위 도메인에 대한 모든 요청을 실행 하면 127.0.0.1로 리디렉션되므로 xyz.local 등을 가진 모든 도메인은 127.0.0.1로 해결됩니다. 다른 접미사를 사용할 수도 있으며 원하는 이름으로 로컬을 바꾸십시오.

Echoipdns는 훨씬 강력합니다. 네트워크의 다른 컴퓨터에서 URL을 사용하고 싶을 때도 구성을 전혀 사용하지 않아도됩니다.

예를 들어 컴퓨터의 IP 주소가 192.168.1.100이면 이제 도메인 이름 xyz.192-168-1-100.local을 사용하면 항상 192.168.1.100으로 해석됩니다. echoipdns는 도메인 이름의 두 번째 부분에서 IP 주소를보고 DNS 쿼리에서 동일한 IP 주소를 반환하여이 마법을 수행합니다. 원격 시스템에 액세스하려는 시스템에서 echoipdns를 실행해야합니다.

echoipdns는 독립형 DNS 프록시로 설정할 수도 있으므로이 DNS를 지정하기 만하면 매번 특별한 명령을 실행하지 않고도 위의 모든 이점을 사용할 수 있으며 모바일 장치에서도 사용할 수 있습니다.

따라서 기본적으로 팀 환경뿐만 아니라 로컬 환경에 대한 와일드 카드 도메인 기반 DNS 개발을 단순화합니다.

echoipdns는 Mac, Linux 및 Windows에서 작동합니다.

참고 : 나는 echoipdns의 저자입니다.


0

아크릴 DNS 프록시를 사용하여 nginx 구성 자동 하위 도메인 구성

nginx 사이트 폴더의 auto.conf 파일

server {
    listen 80;
    server_name ~^(?<branch>.*)\.example\.com;
    root /var/www/html/$branch/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/$branch.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;
    }
}

아크릴 호스트 파일에 추가하고 아크릴 127.0.0.1 example.com *.example.com서비스를 다시 시작하십시오. $ branch-하위 도메인 이름

루트 대신 / var / www / html / $ branch / public; 프로젝트 경로


0

Pi-Hole을 사용하여 수행 할 수 있습니다 . "/ etc / hosts"를 편집하고 dns 서비스를 다시 시작하십시오.

nano /etc/hosts
pihole restartdns

예:

127.0.1.1       raspberrypi
192.168.1.1     w1.dev.net
192.168.1.2     w2.dev.net
192.168.1.3     w3.dev.net

-1

http://www.no-ip.com 과 같은 동적 DNS 클라이언트를 사용할 수 있습니다 . 그런 다음 외부 DNS 서버 CNAME * .mydomain.com을 사용하여 mydomain.no-ip.com으로 이동하십시오.


2
그것은 외부 IP로 해결 될 것이며, 보통 라우터 / 모뎀 설정 페이지를 불러옵니다
Sam

-1

그런 와일드 카드를 추가 할 수는 없지만 최소한 테스트에 필요한 전체 사이트 목록을 호스트 파일에 추가 할 수 있습니다. 호스트 파일에는 다음을 추가하기 만하면됩니다.

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


원래 포스터가이 단계의 번거 로움을 피하려고 시도하고 있다고 생각합니다.
Simon East
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.