VirtualHost 컨텍스트에서 _default _ : *와 * : *의 차이점


34

VirtualHost 컨텍스트에서 " default : *""* : *" 의 차이점을 알고 싶습니다 .

<VirtualHost _default_:*>
  #...
  ServerName host.example.com
  #...
</VirtualHost>

<VirtualHost *:*>
  #...
  ServerName host.example.com
  #...
</VirtualHost>

나는 사용의 차이와 Porpouse를 모른다.

Thk

답변:


39

해결책은 Virtualhost 지시문에 대한 Apache 2.2 문서 에 있습니다 .

구문 : ... (...) Addr은 다음과 같습니다.

  • 가상 호스트의 IP 주소
  • 가상 호스트의 IP 주소에 대한 정규화 된 도메인 이름 (권장되지 않음).
  • 모든 IP 주소와 일치시키기 위해 NameVirtualHost 와 함께 사용되는 * 문자 . 또는
  • 문자열 _default_ 는 일치하지 않는 IP 주소를 포착하기 위해 IP 가상 호스팅 에서만 사용됩니다 .

가상 호스트를 처리하는 두 가지 방법 인 이름 기반 가상 호스팅과 IP 기반 가상 호스팅이 있습니다.

명명 된 가상 호스트를 사용하면 각각 하나 또는 여러 개의 도메인 이름을 관리하는 가상 호스트 목록과 각각에 연결된 가상 호스트 목록이 listening IP:port있습니다. 이 호스트의 모든 IP* 를 의미하는 특수한 값입니다 . 기본 virtualHost는 주어진 각 청취 주소에 대해이 목록에서 처음 선언 된 것입니다.

IP 기반 VirtualHost의 경우 VirtualHost의 ServerName지시문이 사용되지 않으며 중요한 정보는 수신 IP (및 포트)이며 기본 VirtualHost는 들어오는 요청을 처리하는 IP와 일치하는 첫 번째입니다.

명명 된 기반 가상 호스팅 구성을 사용하면 다음과 같습니다.

  • <Virtualhost *:80> with ServerName foo.com "이 호스트에서 관리되는 모든 IP에서", "포트 80에서", "요청 호스트 헤더가 foo.com 인 경우"를 의미합니다.이 가상 호스트를 사용합니다
  • <Virtualhost *:*> with Servername foo.com "이 호스트에서 관리되는 모든 IP에서", "모든 포트에서", "요청 호스트 헤더가 foo.com 인 경우"를 의미합니다.이 가상 호스트를 사용하겠습니다
  • <Virtualhost 10.0.0.2:*> with Servername foo.com "내 네트워크 인터페이스 10.0.0.2에서 들어오는 요청", "모든 포트에서", "요청 호스트 헤더가 foo.com 인 경우"를 의미합니다.이 가상 호스트를 사용합니다
  • <Virtualhost _default_:*> with Servername foo.com : 이름 기반 가상 호스팅과 함께 사용하면 안됩니다

그리고 IP 기반 가상 호스팅에서 :

  • <Virtualhost 10.0.0.2:*> "10.0.0.2 인터페이스에서 오는 요청에이 가상 호스트를 사용합니다"를 의미합니다.
  • <Virtualhost _default_:443> "포트 443에서 오는 요청에 대해 호스트의 다른 모든 네트워크 인터페이스에이 가상 호스트를 사용합니다"
  • <Virtualhost _default_:*> "이 규칙은 이전 규칙과 일치하지 않고 요청 된 호스트 헤더가 명명 된 기반 가상 호스트와 일치하지 않는 경우 호스트의 다른 모든 네트워크 인터페이스에이 가상 호스트를 사용합니다"

따라서 모든 가상 호스트를 정의하는 것이 중요합니다. 설명서는 다음을 추가합니다.

IP 기반 가상 호스팅을 사용하는 경우 특수 이름을 _default_지정할 수 있으며이 경우이 가상 호스트는 다른 가상 호스트에 명시 적으로 나열되지 않은 모든 IP 주소와 일치합니다. _default_가상 호스트 가없는 경우 VirtualHost 섹션 외부의 모든 정의로 구성된 "주"서버 구성은 IP 일치가 발생하지 않을 때 사용됩니다. 그러나 NameVirtualHost 지시문과 일치하는 모든 IP 주소는 "기본"서버 구성이나 _default_가상 호스트 를 사용하지 않습니다 . 자세한 내용은 이름 기반 가상 호스팅 설명서를 참조하십시오.

따라서이 모든 것들이 끝난 후에는 IP 기반과 이름 기반 가상 호스팅을 혼합하는 것이 혼란스러워 질 수 있다는 것이 "명확 해졌습니다". Apache 2.2에서는 이름 기반 가상 호스팅이 사용 된 경우에만 NameVirtualhost <something>사용되었습니다.

그러나 새로운 Apache 2.4 버전에서는 이러한 것들을 이해하기가 더 쉽고 NameVirtualhost선언이 없습니다 . NameVirtualHost 지시문은 더 이상 경고를 발령하는 것 외에는 아무런 영향을 미치지 않습니다. 여러 가상 호스트에 나타나는 모든 주소 / 포트 조합은 암시 적으로 이름 기반 가상 호스트로 취급됩니다 . 더 이상 복잡한 것은 아니지만 문서조차도 더 간단합니다.

  • 문자 *는 와일드 카드 역할을하며 모든 IP 주소와 일치합니다.
  • _default_*의 별명 인 문자열

그래서 아파치 2.4에서 대답은 똑같습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.