로컬 호스트에서 하위 도메인을 테스트해야합니다. 파일 에이 결과를 효과적으로 추가 *.localhost.com
하려면 /etc/hosts/
어떻게해야합니까?
가능하지 않은 경우이 문제를 어떻게 해결합니까? 로컬 서버에서 와일드 카드 하위 도메인을 테스트해야합니다. Django devserver입니다. Django dev 서버가 하위 도메인을 처리 할 수 있습니까? 다른 소프트웨어 / 라우팅을 통해 원하는 결과를 얻을 수 있습니까?
로컬 호스트에서 하위 도메인을 테스트해야합니다. 파일 에이 결과를 효과적으로 추가 *.localhost.com
하려면 /etc/hosts/
어떻게해야합니까?
가능하지 않은 경우이 문제를 어떻게 해결합니까? 로컬 서버에서 와일드 카드 하위 도메인을 테스트해야합니다. Django devserver입니다. Django dev 서버가 하위 도메인을 처리 할 수 있습니까? 다른 소프트웨어 / 라우팅을 통해 원하는 결과를 얻을 수 있습니까?
답변:
파이썬으로 DNS 프록시를 작성했습니다. / etc / hosts에서 와일드 카드 항목을 읽습니다. 여기를 참조하십시오 : https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py
pip install
있다면 :)
dnsmasq를 설치 하십시오 (어쨌든 모든 Linux 데스크톱에서 DNS 캐시 로이 작업을 수행합니다). 에서하는 dnsmasq.conf
줄을 추가 :
address=/localhost.com/127.0.0.1
sudo port install dnsmasq
2. 편집 /opt/local/etc/dnsmasq.conf
3.sudo port load dnsmasq
192.168.50.11
했지만 DNS가 해결되지 않습니다. 어떤 아이디어라도,이 예는 "non-127.0.0.1"IP에 맞습니까?
/etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf
하고 그 안에 줄 address=/localhost.com/127.0.0.1
을 넣은 다음 다시 시작하십시오.
DNS 서버를 설정하고 각 클라이언트 가 DNS 서버를 사용하여 해결하도록해야합니다. 서버 자체는 dnsmasq 와 같은 "가벼운" 또는 BIND 와 같은 무거운 것일 수 있습니다 .
--address=
dnsmasq.conf 매뉴얼 페이지 섹션에 설명 된 동작 중 어떤 부분이 위에서 설명한 사용 사례를 다루지 않습니까?
개인적으로 PAC 파일을 만들고 브라우저에서 사용하도록하십시오.
1 단계 : 파일 작성 예 : *.proxy.pac*
어딘가 (내 $home
폴더 사용 )
2 단계 : 이 코드를 붙여 넣습니다 (예 : 포트 8000).
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*localhost")) {
return "PROXY localhost:8000";
}
return "DIRECT";
}
3 단계 : 브라우저가이 PAC 파일을 사용하도록합니다.
4 단계 : 이제 다음에 액세스하여 앱을 테스트 할 수 있습니다.http://mysubdomain.localhost/
5 단계 : 즐기십시오 :)
wget
등은 이에 영향을받지 않습니다). 그것은 그 자체로는 문제가 아니지만 아마도 이것을 언급하는 것이 좋습니다.
req.url
절대 URL 이라는 사실에 놀랄 것 입니다. 이는 실제 프록시 서버를 작성한다고 가정하기 때문에 수행되지만 디버깅을 위해 / etc / hosts 항목 추가를 중지하는 방법으로이 기술을 사용했다는 것은 놀라운 일입니다. 같은 길을 갈 사람들에게 참고하십시오.
나는 내 오래된 프로젝트를 정리했다.
https://github.com/airtonix/avahi-aliases
요구 사항 :
dnsmasq 또는 python dns 프록시를 사용하는 것의 장점 :
이 DNS 기반 솔루션은 아무것도 설치할 필요없이 제 경우 완벽하게 작동했습니다 : https://gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)
짧은 답변:
/ etc / hosts / 파일에서는 와일드 카드 나 포트 번호를 사용할 수 없습니다. 각 하위 도메인마다 하나의 항목을 작성해야합니다.
짧은 대답은 당신이하지 않는 것입니다. 더 긴 대답은 더 나은 방법과 다른 방법이있을 수 있기 때문에 실제로 달성하고자하는 것에 대해 더 명확해야합니다.
웹 호스팅의 경우 (다른 방법으로는 본 적이 없습니다) 가상 호스팅 인식 웹 서버와 함께 DNS에서 수행됩니다. 와일드 카드 DNS 레코드 (Wikipedia) 에 대한 자세한 내용 과 bind 및 Apache를 사용하여 Linux 용 Apache 및 Bind 를 사용한 Wildcard 호스팅 기사를 참조하십시오 .
최악의 경우, 내가 생각한 로컬 DNS 서버를 사용할 수 있습니다.
이 주제의 공통 태스크는 디렉토리를 서브 도메인에 맵핑하는 것입니다. 이를위한 가장 간단한 방법은 디렉토리 기반 항목을 호스트 파일에 자동으로 추가하는 것입니다.
#! / usr / bin / python 수입 OS hostsFile = open ( "/ etc / hosts", "a +"); lines = hostsFile.readlines () os.listdir ( '/ opt / subdomainDirs')의 fileName : entryExists = 거짓 줄에서 줄을 위해 : 만약 fileName이 줄에 있다면 : entryExists = True 입력하지 않은 경우 hostsFile.write ( "127.0.0.1"+ fileName + ".localhost \ n");
내가이 문제에 대한 궁극적 인 답변이라고 생각하는 것에 대해 tschundeee에게 감사드립니다. 단지 의견을 제시 할 수 있기를 바랍니다.하지만 원래 목표를 달성하려는 사람들을위한 전체 구성은 다음과 같습니다 (와일드 카드는 모두 동일한 코드베이스를 가리키고 있습니다. , XAMPP)
파일 : / etc / hosts (비 Windows)
127.0.0.1 example.local
파일 : /XAMPP/etc/httpd.conf
# Virtual hosts
Include etc/extra/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>
아파치를 다시 시작
원하는 위치에 whatever.pac로 저장 한 다음 브라우저의 네트워크> 프록시> 자동 구성 설정에서 파일을로드합니다 (변경 한 경우 다시로드).
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}
추가 단계를 수행해야한다는 것을 제외하고 dnsmasq가 나를 위해 일했습니다.
전체 절차는 다음과 같습니다.
/etc/resolv.conf
다음 줄 앞에 추가
nameserver 127.0.0.1
다음 줄을 추가하십시오 /etc/dnsmasq.conf
listen-address=127.0.0.1
address=/localhost.localdomain/127.0.0.1
address=/localhost/127.0.0.1
dnsmasq를 다시 시작하십시오.