문제

요청이되도록 로컬 개발 기계를 설정하고 싶습니다. *.local 리디렉션됩니다 localhost. 아이디어는 여러 사이트를 개발할 때 Apache에 vhosts를 추가 할 수 있다는 것입니다. 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 서버를 설정하고 싶지 않거나 어려운 제안을하고 싶지 않습니까?

도움이 되었습니까?

해결책

아크릴 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 아래 호스트 파일에서 와일드 카드를 사용할 수 없습니다.

그러나 새 사이트가 작동하도록 호스트 파일 만 변경하려면 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 테스트를 테스트하고 필요한 파일을 거기에 배치하면 작동합니다.

다른 옵션은 사용하는 것입니다 <Directory> Apache.conf의 태그와 페이지를 참조하십시오 http : // localhost/project/.

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

어쨌든 새 사이트와 위치를 추가 할 때마다 Apache 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 구성과 이것을 결합하면 잠재적으로 가상 호스트를 추가 할 수 있습니다. 제로 설정.

나는 게시물을 찾았다 Windows 호스트 파일을 사용합니다 그것은 또한 "와일드 카드가 허용되지 않는다"고 말합니다.

과거에는 호스트 파일에 추가 항목을 추가했습니다. 이전에 말했듯이 Apache 구성 파일을 이미 편집 할 때는 그다지 추가 작업이 아니기 때문입니다.

호스트 파일 편집은 컴퓨터를 다시 시작하는 대신 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에서는 테스트했습니다.

당신은 시도 할 수 있습니다 화난 호스트, 와일드 카드와 정규 표현을 지원하는 방법을 제공했습니다. 실제로 호스트 파일 향상 및 관리 소프트웨어입니다.
더 많은 기능을 볼 수 있습니다 @ 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)으로 유일한 DN으로 설정해야합니다.

그게 다야

나는 호스트를 대신하기 위해이 간단한 도구를 만들었습니다. 정규 표현이 지원됩니다.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 호스트 파일을 밀접하게 따르며 해당 파일에 WildCard HostName 참조를 넣을 수 없습니다.

Man Page를 읽으면 다음과 같습니다.

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 및 Acrylic DNS Proxy는 최고의 답변이며, 결국 그는 @jeremyasnyder가 조금 더 설명하는 Apache를 사용하여 다중 사이트를 수행 할 수있는 능력을 언급합니다.

... 그러나 우리의 경우 우리는 멀티 테넌트 호스팅 시스템을 테스트하고 있습니다. 대부분 테스트하려는 도메인은 동일하게 진행됩니다 virtualhost, 다른 부부는 다른 곳으로 향합니다.

그래서 우리의 경우, 당신은 단순히 REGEX 와일드 카드를 사용합니다. ServerAlias 지시문, 그렇게 ...

ServerAlias *.foo.local

다음은 목표를 달성하려는 사람들을위한 총 구성입니다 (Dev Environment의 와일드 카드, 즉 XAMPP-이 예제는 모든 사이트가 동일한 코드베이스를 가리키는 것을 가정합니다).

호스트 파일 (항목 추가)

파일 : %SystemRoot % System32 Drivers etc hosts

127.0.0.1   example.local

httpd.conf 구성 (Vhosts 활성화)

파일 : 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으로 저장 한 다음 브라우저의 네트워크> proxy> auto_configuration 설정에 파일을로드하십시오 (이를 변경하면 다시로드).

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로 해결됩니다. 다른 접미사를 사용할 수도 있습니다.

Echoipdns는 더욱 강력합니다. 네트워크의 다른 시스템에서 URL을 사용하려면 구성 제로 구성으로 사용할 수 있습니다.

기계 IP 주소가 192.168.1.100 인 경우 예를 들어, 이제 도메인 이름 XYZ.192-168-1-100.LOCAL을 사용할 수 있으며, 이는 항상 192.168.1.100으로 항상 해결됩니다. 이 마법은 도메인 이름의 두 번째 부분에서 IP 주소를보고 DNS 쿼리에서 동일한 IP 주소를 반환하여 Echoipdns에 의해 수행됩니다. 원격 시스템에 액세스하려는 기계에서 echoipdns를 실행해야합니다.

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 아크릴 서비스를 다시 시작하십시오.$ 지점 - 하위 도메인 이름.

대신에 설정하십시오 루트/var/www/html/$ branch/public; 프로젝트 경로

동적 DNS 클라이언트를 사용할 수 있습니다 http://www.no-ip.com. 그런 다음 외부 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
...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top