Programing

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

lottogame 2020. 3. 22. 10:35
반응형

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


요청이 (으) *.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 서버를 설정하거나 어려운 것을 제안하고 싶지 않습니까?


아크릴 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하면 (을 사용하여 ) 디렉토리를 만들면 도메인 / 가상 호스트를 자동으로 설정할 수 있습니다.


질문에 대답하기 위해 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 / 의 페이지를 참조하는 것 입니다.


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

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

업데이트 : 다음 답변과이 답변에 대한 의견을 확인하십시오. 이 답변은 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를 추가 할 수 있습니다 .


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

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


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


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


우리는 우리의 로컬 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/


파이썬으로 간단한 DNS 프록시를 작성했습니다. / etc / hosts에서 와일드 카드 항목을 읽습니다. 여기를 참조하십시오 : http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py

Linux & Mac OS X에서 테스트했지만 아직 Windows에서는 테스트되지 않았습니다.


와일드 카드 및 정규식을 지원하는 방법을 제공하는 AngryHosts를 시도 할 수 있습니다 . 실제로, 그것은 호스트 파일 향상 및 관리 소프트웨어입니다.
더 많은 기능은 @ http://angryhosts.com/features/에서 볼 수 있습니다


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로 설정해야합니다.

그게 다야


이 간단한 도구를 사용하여 호스트를 대신했습니다. 정규식이 지원됩니다. 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"
    }
]

쓰기 금지를 찾을 수 없었지만, 일반적으로 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 파일을 보는 코드는 와일드 카드 항목을 지원하지 않습니다.

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


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

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

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

ServerAlias *.foo.local

목표를 달성하려는 사람들을위한 전체 구성은 다음과 같습니다 (개발 환경의 와일드 카드, 즉 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";
}

이를 위해 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 주소를보고 DNS 쿼리에서 동일한 IP 주소를 반환하여이 마법을 수행합니다. 원격 시스템에 액세스하려는 시스템에서 echoipdn을 실행해야합니다.

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

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

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

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


아크릴 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; 프로젝트 경로


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


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

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

참고 URL : https://stackoverflow.com/questions/138162/wildcards-in-a-windows-hosts-file

반응형