동일한 웹사이트/도메인의 로컬 및 원격 버전을 모두 구성하고 액세스하는 방법은 무엇입니까?

동일한 웹사이트/도메인의 로컬 및 원격 버전을 모두 구성하고 액세스하는 방법은 무엇입니까?

저는 현재 외부 원격 서버에서 호스팅되는 클라이언트 웹사이트에서 작업하고 있습니다. 개발 버전으로 사용하기 위해 Arch Linux에 설정된 'LAMP 스택'을 실행 중인 로컬 컴퓨터에 사이트 복사본을 다운로드했습니다.

사이트는 WordPress로 구축되므로 사이트의 도메인이 데이터베이스에 저장되며 사이트에 링크가 생성될 때마다 이 도메인이 사용됩니다. 따라서 데이터베이스 편집을 저장하기 위해 가상 호스트를 사용하여 Apache에서 사이트를 구성하고 서버의 도메인 이름을 'vhosts.conf' 파일에서 '라이브' 사이트의 이름과 동일하게 설정했습니다...

ServerName    live-domain-name.co.uk
ServerAlias   *.live-domain-name.co.uk


또한 다음과 같이 로컬 '호스트' 파일에 도메인을 추가했습니다.

127.0.0.1    live-domain-name.co.uk


내가 할 수 있기를 원하는 것은 액세스입니다둘 다적어도 Apache를 실행 중인 경우 사이트의 로컬 복사본을 얻을 수 있도록 브라우저에서 사이트를 검색합니다.그렇지 않다실행하면 사이트의 '진짜' 버전을 얻게 됩니다!


127.0.0.1내 파일에 첫 번째 '네임서버' 항목을 추가했습니다 /etc/resolv.conf. 두 번째는 내 인터넷 라우터의 IP이고 세 번째는 Goolge의 공용 DNS 서버 중 하나입니다. 그러나 Apache가 실행되지 않는 경우에도 $ ping ...도메인의 IP는 여전히 127.0.0.1로 표시됩니다!


내 로컬 호스트를 먼저 확인하는 일종의 DNS 확인자가 필요할 것 같지만 사이트를 찾을 수 없으면(예: Apache가 실행되지 않는 경우) 다른 DNS 서버 중 하나를 사용하도록 대체됩니다! -- DNS 서버/전달자 설치 및 구성에 대한 단서가 없습니다...

누구든지 나를 도와줄 수 있나요?

답변1

@piercedRichard가 제안한 방법(예: 아파치가 다운되었을 때 /etc/hosts에서 항목 삭제)이 실행 가능하다고 생각합니다.

하지만 live-domain-name.co.uk의 IP 주소를 다시 localhost로 라우팅하는 꼬인 방법(iptables 사용)도 생각할 수 있습니다. 나는 이것이 훨씬 더 강력할 것이라고 생각합니다. DNS 확인이 캐시되고 /etc/hosts를 수정하는 것 외에도 OS 계층과 일부 브라우저(예: Firefox)에서 DNS '캐시'를 플러시해야 하기 때문입니다. iptables에 대한 변경은 즉시 이루어져야 합니다...

아마도 다음과 같을 것입니다(로컬로 리디렉션).

iptables -t nat -A OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

규칙 삭제(리디렉션 중지):

iptables -t nat -D OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

Apache가 작동 중인지 여부를 감지하는 한 - /etc/init.d/apache2 파일에 iptables 규칙을 넣거나
localhost:80에 연결을 시도하는 스크립트를 작성하고 괜찮다면 규칙을 작성하고 그렇지 않으면 삭제하십시오. 규칙...

답변2

hosts대부분의 OS는 DNS 서버를 찾기 전에 파일 에서 확인합니다 . 에서 해당 행을 제거(또는 주석 처리)하면 hostsDNS 서버에 쿼리하여 원격 IP임을 찾습니다.

hostnameIP를 확인하는 데에도 사용할 수 있는 것과 동일하게 설정되어 있는 경우 을 변경해야 할 수도 있습니다 hostname(적어도 Linux의 일부 시스템에서는).

hosts.conf 매뉴얼 페이지- order지침에 대한 자세한 내용을 확인하세요.

관련 정보