답변:
해결책은 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에서 대답은 똑같습니다 .
_default_
모든 포트의 가상 호스트
지정되지 않은 IP 주소 및 포트, 즉 다른 가상 호스트에 사용되지 않는 주소 / 포트 조합으로 모든 요청을 포착합니다.
http://httpd.apache.org/docs/2.2/vhosts/examples.html#default