아파치 가상 호스트 질문입니다.

sosiq의 이미지

처음 아파치 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파일이 뜹니다 이게 무슨 영문인지;;
답변 부탁드립니다.

ole2000의 이미지

질문을 잘 이해는 못하겠지만..

두도메인의 폴더를 같은 디렉토리로 지정하신거 아닌가요?

Be cool...

sosiq의 이미지

아니요
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.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라면 제가 말씀 드린 설정 대로 해야 정상입니다. 아래를...

ServerName l1004net.pe.kr:80
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin ysnglee2000@chollian.net
    DocumentRoot "/.........."
    ServerName l1004net.pe.kr
    ErrorLog logs/l1004net.pe.kr_error_log
    CustomLog logs/l1004net.pe.kr_access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin hyh1988@hotmail.com
    DocumentRoot "/........"
    ServerName hyh1988.l1004net.pe.kr
    ErrorLog logs/hyh1988.l1004net.pe.kr_error_log
    CustomLog logs/hyh1988.l1004net.pe.kr_access_log common
</VirtualHost>

음.. 이거 말고도 호스트는 많은데 두 개만 뽑아서 넣어 봤습니다. 아시겠지만 저는 저런 식으로 설정을 했고요.. 주석 같은 부분은 전부 무시 했습니다.

음... 잘 안 되신다면.. 글세요.. 왜 그럴 까요.

이여송 사도요한 드림.
PS:저같은 경우는 Apache 2.x입니다.
PS2:아 근대 1.x에서도 저와 같은 설정으로 잘 되었고요 음.

사람천사

sosiq의 이미지

제가 설정한 걸 올려 볼께요.
일단 아파치 기본 웹 도메인은 www.apache.co.kr 입니다. 인덱스 파일은 /var/www/html/idex.html이 잘 뜬답니다. 아래와 같은 설정을하면..

<VirtualHost 192.168.1.2:80>
          ServerAdmin        test@test.co.kr
          DocumentRoot     /var/www/html
          ServerName        apache.co.kr
          ErrorLog              /var/www_log/error_log
          CustomLog          /var/www_log/access_log common
</VirtualHost>

위와 같은 설정을 하면 데몬 실행이 안됩니다..
설정해준 부분을 지우고
<VirtualHost 192.168.1.2:80>
          ServerAdmin        test1@test1.co.kr
          DocumentRoot     /home/test1/www/
          ServerName        test1.co.kr
          ErrorLog              /home/test1/www_log/error_log
          CustomLog          /home/tset1/www_log/access_log common
</VirtualHost>

이런 식으로 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기반/이름 기반의 호스트를 함께 사용 할 수 없습니다.(아... 제가 아는게 잘못 된 거라면... 누군가 가르쳐 주시면 감사하겠습니다. 그냥 배운데로, 지금까지 서버 셋팅은 전부 그런 식으로 해 왔기 때문에...)

아무튼.. 그렇습니다. 도움 되시고요. 뭔가 또 안 풀리시면 글 쓰시면 보고 또 답 하겠습니다. (시간 되는 데로...)

그럼... 행복하십시요.
이여송 사도요한 드림.

사람천사

sosiq의 이미지

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로 접속 되는 모든 호스트에 대해서 어떤 도매인으로 접속 할 건지 여부와 상관 없이 접속 하게 됩니다. 아니 정확히 말해서 자료를 제공 하게 됩니다. 그러나 이름 기반 호스팅은 그거랑 상관이 없으니.. 충돌 나고 문제 생기는 거죠... 자 아래 볼까요? 간단하게 예제 하나 해 보겠습니다.

아.. 근대, 제가 상당히 건방지게 쓰고 있단 생각이 들어서 죄송합니다. 설명도 제대로 하고 있나 몰라요.. 머리론 이해를 하고 잇고 저도 그대로 응용 하고 있는데... 설명을 잘 못 하겠네요...

# 예제 1: IP기반
<VirtualHost 111.111.111.111:80>
  ServerName network.com
  DocumentRoot "/www/network.com"
  ServerAdmin network@network.com
</VirtualHost>

# 예제 2: 이름 기반
NameVirtualHost *:80
<VirtualHost *:80>
  ServerName usernet.net
  DocumentRoot "/www/usernet.net"
  ServerAdmin usernet@usernet.net
</VirtualHost>

# 예제 1의 경우 a.com이던 b.com이던 111.111.111.111 IP와
# 연결 되어 있다면, 무조건 저쪽 내용이 나옵니다. 저 설정을
# 그대로 따르면요.

# 그러나 예제 2의 경우, 이름 기반입니다 물론 IP는 192.168.1.1
# 이라고 가정 하고요. 이 경우, usernet.net와 mmm.net가 동시에
# 연결 되어 잇다고 하죠. 그렇다면 192.168.1.1로 들어오는
# 모든 접속을 검토 해서 usernet.net로 접속 하려 하는 경우
# 그 내뇽을 보여 주고 mmm.net로 접속 하려 한다면 그 또한
# 그 내용을 보여 주게 되는 겁니다.

# 그러나 만약 IP기반과 이름 기반을 같이 사용 한다면 결국
# 충돌이 날 수 밖에요. IP 기반은 이름이 어떻게 되던 상관
# 없이 무작정 자신의 지정된 IP 주소로 들어 오는건 무조건
# 다 받아 드립니다. 그러나 이름 기반은 그걸 무시하고
# 어떤 IP 주소로 들어 오던 결국 그 이름.. 도매인 명이겠죠?
# 결국 그 이름에 맞게 내용을 출력 해야 합니다. 그럼 두 과정
# 에서 서버는 햇갈리게 될 수 밖에요. 결국 그런걸 서버 환경
# 파일 검사 도중에 미리 검사 하여 시작을 막거나 시작 되었
# 다가도 오류 때문에... 예를 들면 네트워크 주소 바인딩 등이
# 문제가 생길 수 있고 그렇게 되면 떳다가도 죽는 거죠.

뭐.. 그런 겁니다. 리디렉션(요청 문서 방상 재설정)의 경우는 흐흠. 저도 마땅히 드릴 말씀이 없네요. 혹시 오류 메세지 같은거 출력에 대한 거라면... 많은 분들이 올려 주신듯 하고, 가능하다면 manpage를 참고 하시는게 제 설명 보다 빠를것이라 생각 합니다 음.

그럼 행복하십시요.
이여송 사도요한 드림.

사람천사

wariua의 이미지

ysnglee2000 wrote:
IP기반이면 그 IP로 접속 되는 모든 호스트에 대해서 어떤 도매인으로 접속 할 건지 여부와 상관 없이 접속 하게 됩니다. 아니 정확히 말해서 자료를 제공 하게 됩니다. 그러나 이름 기반 호스팅은 그거랑 상관이 없으니.. 충돌 나고 문제 생기는 거죠...

혹시라도 오해의 여지가 있을까 싶어 첨언하자면...

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`

사랑천사의 이미지

바인딩 할 때에 꼬이거나 하면 실행에 문제가 발생 할 수 있을 듯 싶군요... 제가 예제로 적은 설정을 살펴 보면 말이죠.

그리고, 리디렉션에 대한 부분은 이미 다른 글에서 답을 찾으신 것 같네요 음...

이여송 사도요한 드림.

사람천사

sosiq의 이미지

namevirtualhost apache.co.kr:80


<virtualhost *:80>
    serveradmin          test1@test1.co.kr
    documentroot       /home/test1/www/
    servername           test1.co.kr
    serveralias            www.test1.co.kr
    errorlog                 /home/test1/www_log/error_log
    customlog             /home/test1/www_log/access_log common
</virtualhost>

<virtualhost *:80>
    serveradmin        test2@test2.co.kr
    documentroot      /home/test1/www/
    servername         test2.co.kr
    serveralias          www.test2.co.kr
    errorlog               /home/test2/www_log/error_log
    customlog            /home/test2/www_log/access_log common
</virtualhost>

이렇게 설정해 주었는대도 꼬이는군요;;

사랑천사의 이미지

NameVirtualHost *:80으로 하시던지 하세요. 그럼 안 꼬일 겁니다. 아니면 특정 IP로만 이름 기반 호스팅이 가능하게 하려면 그 IP 주셔도 되고요. 성공 확율에 대해선 장담 드릴 수 없군요. 전 그렇게 해 본 적이 없으니까 말입니다 음.

그럼...
이여송 사도요한 드림.
PS:사실 저기다 저렇게 적어 주실 필요는 없습니다. NameVirtualHost에 말입니다.
PS2:그리고 매인 서버도 넣어 주라는 말은...

<VirtualHost *:80>
  ServerName apache.co.kr
  DocumentRoot /www/html/
  ServerAdmin apache@apache.co.kr
  ErrorLog logs/error.log
  CustomLog logs/access.log common
</VirtualHost>

요것도 넣어 주시라는 말입니다. 그러나 test1.com과 test2.com 가상 호스트 전에 넣어 주셔야 동작 하게 됩니다 음.

사람천사

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.