아파치 가상 호스트 질문입니다.
글쓴이: sosiq / 작성시간: 목, 2006/02/23 - 6:53오후
처음 아파치 index.html파일을 만들어 주고 도메인을 www.apache.co.kr로 주고 실행을 하니 index.html파일에 있는 내용이 잘 뜹니다. 그래서DirectoryIndex에 test1.html을 추가해주고 아파치 가상 호스트를 설정했습니다.
가상 호스트에 도메인은 www.test1.co.kr입니다.
역시 test1.html파일이 잘 뜹니다. 문제는 원래에 아파치 도메인인 www.apache.co.kr을 치면 index.html파일이 아니라 가상 호스트인 www.test1.co.kr에 test1.html파일이 뜹니다 이게 무슨 영문인지;;
답변 부탁드립니다.
Forums:
질문을 잘 이해는 못하겠지만..두도메인의 폴더를 같은 디렉토리로
질문을 잘 이해는 못하겠지만..
두도메인의 폴더를 같은 디렉토리로 지정하신거 아닌가요?
Be cool...
아니요www.apache.co.kr의 홈 디렉토리는 /var/html
아니요
www.apache.co.kr의 홈 디렉토리는 /var/html/www
www.test1.co.kr의 홈 디렉토리는 /home/test1/www 입니다.
html파일도 /var/html/www/index.html과 /home/test1/test1.html 입니다.
어이없게도 www.apache.co.kr로 접속하나 www.test1.co.kr로 접속하나 test1.html파일이 디스플레이 됩니다...
가상 호스트는...
매인 서버도 호스트에 추가 해 주어야 합니다. 예를 들어.
a.com과 b.com c.com이 있다고 한다면 a.com을 매인으로 하고 볼 때 가상 호스트에도 a.com이 들어 있어야 a.com으로 접속 시에 정상적인 사용이 가능 하다는 것입니다 음.
아무튼.. 그렇네요... 무슨 뜻인지 이해 되실려나 모르겠지만.(그래서 보통 DefaultServer 계념으로 생각 하고 등록 합니다. 저도 그렇게 했고 배우기도 그렇게 배웠습니다 음.)
그럼...
이여송 사도요한 드림.
사람천사
음 a.com이 기본 아파치 웹이고 가상이 b.com과 c.com이고 a
음 a.com이 기본 아파치 웹이고 가상이 b.com과 c.com이고 a.com도 가상으로 설정해야 한다는 거죠?
음 이 글을 보고 www.apache.co.kr도 가상호스트로 잡아 주었더니 이런 에러 메시지가 뜨는군요...
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
이러면서 데몬 실행이 안됩니다. www.apache.co.kr 부분을 주석 처리해 주면 데몬 실행이 잘됩니다.[/list][/code]
음...
거 이상하군요 음...
제 설정 파일 한번 넣어 보겠습니다. 혹시 이름 기반 VHOST라면 제가 말씀 드린 설정 대로 해야 정상입니다. 아래를...
음.. 이거 말고도 호스트는 많은데 두 개만 뽑아서 넣어 봤습니다. 아시겠지만 저는 저런 식으로 설정을 했고요.. 주석 같은 부분은 전부 무시 했습니다.
음... 잘 안 되신다면.. 글세요.. 왜 그럴 까요.
이여송 사도요한 드림.
PS:저같은 경우는 Apache 2.x입니다.
PS2:아 근대 1.x에서도 저와 같은 설정으로 잘 되었고요 음.
사람천사
제가 설정한 걸 올려 볼께요.일단 아파치 기본 웹 도메인은 www.a
제가 설정한 걸 올려 볼께요.
일단 아파치 기본 웹 도메인은 www.apache.co.kr 입니다. 인덱스 파일은 /var/www/html/idex.html이 잘 뜬답니다. 아래와 같은 설정을하면..
위와 같은 설정을 하면 데몬 실행이 안됩니다..
설정해준 부분을 지우고
이런 식으로 test1.co.kr에 가상 호스트를 만들어 주면 잘만 실행이 됩니다.
왜 이럴까요..?
흐흠.. 그렇군요...
혹시 바인딩을 192.168.1.2로만 하시나요? 그리고 apache.co.kr test1.co.kr 등의 형식으로 호스팅을 하고자 하신다면 NameVirtualHost 인자를 사용 하셔야 합니다..(저처럼)
아무래도 님께선 IP 주소 바인딩 때문에 설정을 저렇게 하신 것 같은데요. 되도록이면 저렇게 안 하시는게 좋겟네요.
매인 설정에서... 그러니까 글로벌 설정에서.
ServerName xxx.xxx:80
가상 호스트 설정에서
NameVirtualHost *:80 (혹은 뭐 192.168.1.2해도 되간 하겠지만, 왼만하면 바인딩을 그런 식으로 하는건 별로 안 좋아 보이네요. 가능하다면 Listen 192.168.1.2:80 정도로 해 놓고 그 상태에서 다른 곳도 바인딩을 그런 식으로 하시는게 좋을 겁니다.)
그리고 아셔야 할 게 하나 잇다면 IP기본 가상 호스트와 이름 기반 가상 호스트를 함께 사용 하실 수는 없다는 겁니다. 그러나 님은 그렇게 하신거나 마찬가지니 실수 하신것 같네요.
제 사이트 설정을 참고 하셔서... 한번 꾸며 보세요. 어차피 지금 보니 서버가 내부에 라우터나 기타 게이트웨이 장치 하부에서 운영 되고 있는듯 하네요.(사설 네트워크) 그렇다면 바인딩 저렇게 안 하셔도 상관 없다고 생각 됩니다만... 허허... 문제가 잇으셔서 저렇게 하신 거라면 드릴 말씀은 없네요. 분명히 말씀 드리지만 IP기반/이름 기반의 호스트를 함께 사용 할 수 없습니다.(아... 제가 아는게 잘못 된 거라면... 누군가 가르쳐 주시면 감사하겠습니다. 그냥 배운데로, 지금까지 서버 셋팅은 전부 그런 식으로 해 왔기 때문에...)
아무튼.. 그렇습니다. 도움 되시고요. 뭔가 또 안 풀리시면 글 쓰시면 보고 또 답 하겠습니다. (시간 되는 데로...)
그럼... 행복하십시요.
이여송 사도요한 드림.
사람천사
conf 파일에서 ip를 도메인으로 설정해 주니 되는군요.왜 ip 기
conf 파일에서 ip를 도메인으로 설정해 주니 되는군요.
왜 ip 기반과 도메인 기반의 호스트를 함께 사용할 수 없는지 아시면 설명좀 해주셧으면 합니다.
ip는 그 컴퓨터에 주소이고 도메인은 ip와 equal 관계가 아닙니까?(물론 nameserver설정을 해줬을 때지만요)
마지막으로 혹시 리다이렉션에 대해서 아시면 조금이라도 설명좀 해주세요. 책을 보고 하려니 영 감이 안잡히네요...
아하.. 그 이유는요...
님께선 1:1로 셋팅 된다고 생각 하시는 모양이군요. 만약 그렇다면 이런 경우를 생각 해 봅시다. 결국 IP는 하나에 호스팅 이란건 여러 도매인을 물리는 거죠. 그러나 IP를 지정 해 버리면 아파치에서의 가상 호스트 계념에 따라 IP기반으로 인식 합니다. 그건 뭔 소리냐...
한 서버에 인터페이스(네트워크 인터페이스)가 여러 개 있을 수 있습니다. 솔직히 말해서 루프백도 잇고 이더넷 카드도 있으면 벌써 두 개나 잡힙니다. 그럼 IP기반으로 본다면 IP하나에 한 가상 호스트 밖에 올 수가 없죠. 이건 뭐냐면...
127.0.0.1에 호스트 하나(매인)
192.168.1.1에 호스트 하나(1번)
192.168.2.1에 호스트 하나(2번)
192.168.3.1에 호스트 하나(3번)
이런 식으로 IP별로 접속 되는(그러니까 바인딩 된 주소별로 다른 내용을 보이도록 설정 하는 가상 호스트죠.) 곳이 달라 지게 되는 것입니다. 그게 IP 기반 가상 호스트죠.
그러나 도매인 기반 가상 호스트는 그런게 아니라 IP와 상관 없이 도매인 별로 접속을 유도 하게 됩니다. 이건 결국 무엇이냐.. 한 IP에 도매인이 여러개 물려 있을 때 결국 신호는 한 IP로 갑니다. 그러나 서버에서 클라이언트쪽이 어느 주소(호스트 이름)로 접속 했는지는 충분히 알죠... 예를 들어 a.com으로 접속 하길 원해서 그렇게 쿼리를 보내면 서버는 그렇게 생각 하게 될 거고요. 결국 신호는 다 자기한태 오니까요.
근대 생각 해 보세요. IP기반 가상 호스트 지정 하도록 하고 거기다 이름 기반으로.. 설정 하면... 후훗... 충돌 날 수 밖에요... 이치에도 안 맞고요. 허허허...
IP기반이면 그 IP로 접속 되는 모든 호스트에 대해서 어떤 도매인으로 접속 할 건지 여부와 상관 없이 접속 하게 됩니다. 아니 정확히 말해서 자료를 제공 하게 됩니다. 그러나 이름 기반 호스팅은 그거랑 상관이 없으니.. 충돌 나고 문제 생기는 거죠... 자 아래 볼까요? 간단하게 예제 하나 해 보겠습니다.
아.. 근대, 제가 상당히 건방지게 쓰고 있단 생각이 들어서 죄송합니다. 설명도 제대로 하고 있나 몰라요.. 머리론 이해를 하고 잇고 저도 그대로 응용 하고 있는데... 설명을 잘 못 하겠네요...
뭐.. 그런 겁니다. 리디렉션(요청 문서 방상 재설정)의 경우는 흐흠. 저도 마땅히 드릴 말씀이 없네요. 혹시 오류 메세지 같은거 출력에 대한 거라면... 많은 분들이 올려 주신듯 하고, 가능하다면 manpage를 참고 하시는게 제 설명 보다 빠를것이라 생각 합니다 음.
그럼 행복하십시요.
이여송 사도요한 드림.
사람천사
Re: 아하.. 그 이유는요...
혹시라도 오해의 여지가 있을까 싶어 첨언하자면...
IP 기반 가상 호스트 설정과 이름 기반 가상 호스트 설정은 함께 사용이 가능합니다. 가령 ysnglee2000님께서 올려주신 예제1과 예제2를 합친 설정으로 돌리면 다음과 같이 동작합니다.
- 111.111.111.111:80 주소로 들어온 요청은 (HTTP 헤더의 Host 필드값에 관계없이) /www/network.com의 문서로 응답합니다.
- 그 외의 요청 중 usernet.net을 목적지로 들어온 (즉, HTTP 헤더의 Host 필드값이 usernet.net인) 요청은 /www/usernet.net의 문서로 응답합니다.
- 나머지 요청 모두는 이름 기반 가상 호스트 중 첫 번째 설정에 있는 www/usernet.net의 문서로 응답합니다.
두 가지를 섞은 설정예를 Apache vhost 문서에서도 찾아볼 수 있습니다.[/]$PWD `date`
그러나...
바인딩 할 때에 꼬이거나 하면 실행에 문제가 발생 할 수 있을 듯 싶군요... 제가 예제로 적은 설정을 살펴 보면 말이죠.
그리고, 리디렉션에 대한 부분은 이미 다른 글에서 답을 찾으신 것 같네요 음...
이여송 사도요한 드림.
사람천사
도매인으로 설정해 주어도 꼬이는군요..
이렇게 설정해 주었는대도 꼬이는군요;;
그냥...
NameVirtualHost *:80으로 하시던지 하세요. 그럼 안 꼬일 겁니다. 아니면 특정 IP로만 이름 기반 호스팅이 가능하게 하려면 그 IP 주셔도 되고요. 성공 확율에 대해선 장담 드릴 수 없군요. 전 그렇게 해 본 적이 없으니까 말입니다 음.
그럼...
이여송 사도요한 드림.
PS:사실 저기다 저렇게 적어 주실 필요는 없습니다. NameVirtualHost에 말입니다.
PS2:그리고 매인 서버도 넣어 주라는 말은...
요것도 넣어 주시라는 말입니다. 그러나 test1.com과 test2.com 가상 호스트 전에 넣어 주셔야 동작 하게 됩니다 음.
사람천사
댓글 달기