이름기반 가상호스트 지원
페이지 정보
작성자 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 16,602회 작성일 08-06-23 10:58본문
이름기반 가상호스트 지원
이름기반 대 IP기반 가상호스트
IP기반 가상호스트는 연결한 IP 주소를 가지고 서비스할 가상호스트를 결정한다. 그래서 각 호스트는 서로 다른 IP 주소를 가져야 한다. 이름기반 가상호스트의 경우 서버는 클라이언트가 HTTP 헤더로 호스트명을 알려주길 바란다. 이런 방법으로 한 IP 주소로 여러 다른 호스트를 서비스할 수 있다.
이름기반 가상호스트는 DNS 서버가 각 호스트명이 올바른 IP 주소로 대응하도록 가상호스트를 설정하고, 다른 호스트명을 구별할 수 있도록 아파치 웹서버를 설정하기만 하면되므로 더 간단하다. 이름기반 가상호스트는 또 여러 IP 주소가 필요없다. 그러므로 특별히 IP기반 가상호스트를 선택할 이유가 없다면 이름기반 가상호스트를 사용해야 한다. IP기반 가상호스트를 사용해야할 이유로는:
- 이름기반 가상호스트를 지원하지않는 오래된 클라이언트들이 있다. 이름기반 가상호스트를 사용하려면 클라이언트가 HTTP Host 헤더를 보내야 한다. 이는 HTTP/1.1에서는 필수이고, 최근 모든 HTTP/1.0 브라우저들도 확장으로 지원한다. 만약 이름기반 가상호스트를 사용하면서 오래된 클라이언트를 지원해야 한다면 이 문서 끝에 있는 방법을 살펴봐라.
- SSL 프로토콜의 성격상 SSL 보안서버에서 이름기반 가상호스트를 사용할 수 없다.
- 어떤 운영체제나 네트웍 장치는 다른 IP 주소를 사용하지 않으면 호스트를 구별하지 못하는 네트웍 사용량(bandwidth) 관리기술을 사용한다.
이름기반 가상호스트 사용하기
관련된 모듈 | 관련된 지시어 |
---|---|
이름기반 가상호스트를 사용하려면 서버는 연결을 받을 IP 주소를 (아마 포트도) 정해야 한다. 이는
NameVirtualHost
지시어로 가능하다. 일반적으로 서버의 모든 IP 주소를 사용한다면 NameVirtualHost
의 아규먼트로 *
를 사용한다. 여러 포트를 사용할 (예를 들어, SSL을 사용할) 계획이라면 *:80
과 같이 아규먼트에 포트를 추가해야 한다. NameVirtualHost
지시어에 IP 주소를 적어주었다고 서버가 자동으로 그 IP 주소를 기다리지 않음을 주의하라. 자세한 내용은 아파치가 사용할 주소와 포트 설정하기를 참고하라. 또, 여기서 지정한 IP 주소는 서버의 네트웍 인터페이스이어야 한다.다음 단계는 서비스하려는 호스트별로
<VirtualHost>
블록을 만드는 일이다. <VirtualHost>>
지시어의 아규먼트는 NameVirtualHost
지시어의 아규먼트(예를 들어, IP 주소나 모든 주소를 뜻하는 *
)와 같아야 한다. <VirtualHost>>
블록 안에는 최소한 서비스할 호스트를 지정하는 ServerName
지시어와 호스트의 내용이 파일시스템 어디에 있는지를 지정하는 DocumentRoot
지시어가 필요하다.주 호스트가 없어진다
기존에 사용하던 웹서버에 가상호스트를 추가한다면 기존에 사용하던 호스트에 대한
<VirtualHost>
블록도 추가해야 한다. 이 블록에 포함하는 ServerName
과 DocumentRoot
는 전체 ServerName
과 DocumentRoot
와 같아야 한다. 설정파일에서 이 가상호스트를 가장 먼저 적으면 기본 호스트가 된다.예를 들어
www.domain.tld
도메인을 서비스하고 있었는데 같은 IP 주소에 www.otherdomain.tld
란 가상호스트를 추가하고 싶다고 가정하자. httpd.conf
에 다음과 같이 추가하면 된다:NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
NameVirtualHost
와 <VirtualHost>
지시어 둘 모두 *
대신 직접 IP 주소를 지정할 수도 있다. 예를 들어, 이런식으로 한 IP 주소에 여러 이름기반 가상호스트들을 돌리고, 다른 주소에 IP기반 혹은 이름기반 가상호스트들을 돌릴 수 있다.어떤 서버는 여러 이름으로 접속할 수 있길 바란다. 이는
<VirtualHost>
섹션 안에 ServerAlias
지시어를 사용하여 가능하다. 예를 들어 위의 첫번째 <VirtualHost>
블록에서 ServerAlias
지시어를 사용하면 열거한 이름으로 같은 웹사이트를 볼 수 있다:ServerAlias domain.tld *.domain.tld
domain.tld
도메인에 있는 모든 호스트에 대한 요청을 www.domain.tld
가상호스트가 서비스한다. 이름을 줄때 와일드카드 문자 *
와 ?
를 사용할 수 있다. 물론 ServerName
이나 ServerAlias
에 이름을 적어주었다고 끝이 아니다. 먼저 이 이름들이 서버의 IP 주소로 대응하도록 DNS 서버를 알맞게 설정해야 한다.마지막으로
<<VirtualHost>>
안에 다른 지시어들을 사용하여 가상호스트를 자세히 설정할 수 있다. 대부분의 지시어를 사용할 수 있으며, 관련된 가상호스트의 설정만을 변경한다. 어떤 지시어가 사용가능한지 알려면 지시어의 사용장소를 확인하라. (<<VirtualHost>>
안이 아닌) 주서버설정에서 지정한 설정 지시어는 가상호스트에 같은 설정 지시어가 없는 경우에만 사용된다.요청을 받으면 서버는 먼저
NameVirtualHost
에서 지정한 IP 주소인지 검사한다. 그렇다면 그 IP 주소를 가진 <VirtualHost>
섹션들에서 요청한 호스트명과 일치하는 ServerName
이나 ServerAlias
를 찾는다. 찾으면 그 설정을 사용한다. 적절한 가상호스트를 찾지못하면, IP 주소에 해당하는 가상호스트들중 첫번째 것을 사용한다.결과적으로 처음에 나온 가상호스트가 기본 가상호스트가 된다. IP 주소가
NameVirtualHost
지시어에 해당하면, 주서버의 DocumentRoot
는 절대로 사용하지 않는다. 특정 가상호스트에 해당하지않는 요청을 설정하려면 설정을 <VirtualHost>
에 담고 설정파일에서 먼저 나오도록 하면 된다.관련링크
댓글목록
등록된 댓글이 없습니다.