하나의 IP 주소와 많은 웹 사이트가 있습니까?


27

인터넷에 있지만 하나의 웹 이름이 많은 하나의 IP 주소가있는 경우 어떻게해야합니까? 예를 들어, 호스팅 회사에 공유 IP가 있지만 해당 도메인의 다른 모든 사람과 함께 무제한 도메인 이름을 얻는 경우.

인터넷에 상자가 있지만 다른 www를 입력 할 때 다른 웹 사이트를 보유하고있는 다른 컴퓨터를 가리키고 싶습니다 ... (다른 상자에 바로 옆에 앉아 있습니다). 모든 하위 도메인입니까? 고맙습니다.

나는 호스팅 회사입니다

답변:


36

HTTP 1.1 프로토콜의 일부입니다.

특히 HTTP 1.1 프로토콜에는 클라이언트가 액세스하려고하는 특정 서버의 웹 사이트를 지정하는 "host :"라는 헤더가 포함되어 있습니다.

따라서 snoopy.net과 woodstock.org가 모두 192.0.32.10을 공유하고 브라우저가 http://snoopy.net/doghouse 특정 http 요청 에서 콘텐츠를 가져 오려고 하면 다음과 같습니다.

GET /doghouse HTTP/1.1
Host: snoopy.net

원하는 URL이 http://woodstock.org/seeds요청이면

GET /seeds HTTP/1.1
Host: woodstock.org

두 경우 모두 컴퓨터와 서버의 포트 80 사이에 tcp 소켓이 있습니다. 서버는 호스트 헤더에 따라 /var/www/snoopy.net 또는 /var/www/woodstock.org/에서 컨텐츠를 가져 오는 것을 알고 있습니다.

쿠키에 대한 다른 헤더와 브라우저 유형 및 허용되는 컨텐츠와 같은 다른 것들이 있지만 "호스트"헤더는 구체적으로 웹 서버가 원하는 가상 웹 사이트를 알 수있게하는 것입니다.

RFC2616에 더 있습니다 .

이것이 바로 https 사이트에 자체 IP 주소가 있어야하는 이유이기도합니다. http 트랜잭션 전에 SSL 키 교환 및 인증서 확인이 수행되므로 http 서버는 "woodstock에 대한 인증서를 제공하는 것을 알 수 없습니다. 192.0.32.10 포트 443에서 https 연결을 수신 할 때 org "또는"snoopy.net "


편집하다

** 의견에 Grawity는 서버가있는 웹 사이트에 액세스를 시도하는 등 사용자 알고 허용 TLS 사양에서 SSL의 확장이 있음을 지적하고, 그래서 대부분의 최신 웹 브라우저는, 이러한 확장이 필수가 조금 너무 강한.


그래서 웹 서버는 해당 헤더를보고 올바른 웹 사이트로 옮길 것입니까? 같은 포트에 여러 웹 사이트를 가질 수 있습니까?
johnny

1
그것이 바로 그 목적입니다. 아파치와 같은 하나의 "서버"는 포트 80이 192.0.32.10이며 많은 DNS 항목이 있으며 각각은 "사이트"입니다. 서버는 "호스트"헤더를 기반으로 원하는 사이트가 무엇인지 알고 있습니다.
chris

3
DNS는 이름이 서버가 수신하는 동일한 IP 주소를 가리 키 도록 구성됩니다 . 서버는 동일한 IP 및 포트에서 연결을 수신하지만 브라우저가 "I want to SiteA.com"이라고 말하면 SiteB.com을 요청할 때와 다른 컨텐츠를 제공해야한다는 것을 알게됩니다.
Massimo

2
더 명확하게 말하면 : 두 사이트는 TCP / IP 수준이 아니라 HTTP 프로토콜 수준에서 구별됩니다. 누군가 사무실에 전화를 걸어 John 또는 Susan과 대화를 요청하는 경우와 같습니다. 전화 번호는 동일하지만 한 사람 이상이 사용할 수 있습니다.
Massimo

1
대부분의 웹 브라우저 및 서버는 이제 TLS 서버 이름 표시를 지원하므로 웹 사이트 당 하나의 IP 주소가 필요하지 않습니다.
grawity

12

모든 최신 브라우저가 "호스트 :"헤더라고하는 요청과 함께 전송하는 것이 있습니다.

이 페이지에 대한 Firefox의 실제 요청은 다음과 같습니다.

호스트 : superuser.com
사용자 에이전트 : Mozilla / 5.0 (Windows; U; Windows NT 6.0; en-US; rv : 1.9.1.7) Gecko / 20091221 Firefox / 3.5.7 (.NET CLR 3.5.30729)
수락 : text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
수락 언어 : en-us, en; q = 0.5
수락 인코딩 : gzip, 수축
수락 문자 집합 : ISO-8859-1, utf-8; q = 0.7, *; q = 0.7
연결 유지 : 300
연결 : 연결 유지

보시다시피

호스트 : superuser.com
비트는 해당 웹 사이트를 식별합니다.

IIS 및 Apache에서는 특정 IP / 호스트 조합의 요청 만 수락하는 가상 웹 사이트를 구성 할 수 있습니다.

특정 문제에 관해서는 특정 호스팅 회사가 구성을 요청하는 방법을 읽어야합니다.


또한 IP 주소에 대해 여러 개의 DNS 항목을 설정해야한다고 언급해야합니다.
Tadeusz A. Kadłubowski

@Tadeusz : 와일드 카드 DNS 항목을 설정할 수 있으므로 반드시 필요한 것은 아닙니다.
John Gietzen

6

단일 IP 주소 / 호스트에서 둘 이상의 도메인 / 하위 도메인을 호스팅하는 기술을 가상 호스트 라고 합니다 . http get 요청에는 웹 서버가 요청을 특정 가상 도메인과 일치시킬 수있는 요청의 도메인 이름이 포함됩니다.

하나의 외부 IP로 내부에 여러 개의 물리적 호스트가있는 경우 요청을 올바른 시스템 / 내부 IP 주소로 전달하도록 리버스 프록시 를 설정하는 것이 좋습니다.


또는 다른 포트의 다른 http 서버도 물론 가능합니다.
Chopper3

예, 옵션이기도합니다. 그러나 사람들은 URL을 입력 할 때 포트를 지정하는 데 익숙하지 않으므로 관리자 인터페이스와 같은 몇 가지 상황에 대한 솔루션을 예약합니다.
3dinfluence

3

웹 서버의 기능을 일반적으로 '가상 호스트'라고합니다. dns 항목이 해당 IP 주소 (다른 답변에서 언급 한 것처럼)를 가리 키도록 요청하면 서버는 요청 된 호스트가 무엇인지에 따라 다른 사이트를 서버합니다.

다른 상자를 가리키는 한. 쿼리를 먼저 받으려면 대부분의 웹 서버에서 리디렉션을 구성 할 수 있습니다. 하위 도메인에 대해 이야기하는 경우 각 하위 도메인을 다른 IP 주소로 지정하기 만하면됩니다.

즉, host.com-> IP 1, www.host.com-> IP 2 및 mail.host.com-> IP 3

보다 구체적인 답변을 원하면 실행중인 운영 체제에 어떤 웹 서버 소프트웨어가 있는지 말해야합니다.

ServeFault가이 질문에 더 적합한 곳이라는 것을 알 수 있습니다.


1

한마디로 ...

하나-다양한 도메인의 DNS 항목이 모두 상자를 가리 키도록 설정합니다.

2-다른 사람들이 설명했듯이 요청한 호스트 이름과 일치하도록 웹 서버를 설정하십시오 (하나는 말하지 않음).

이렇게하면 모든 도메인에 대한 모든 요청이 동일한 시스템으로 이동하고 구성에서 요청 된 도메인을 가져 와서 해당 사이트의 컨텐츠를 포함하는 올바른 폴더로 라우팅합니다.


0

두 번째 웹 사이트에 대한 별도의 물리적 서버가있는 것처럼 귀하의 질문에서 나에게 들립니다. 이 경우 두 서버에 단일 IP 주소를 사용할 수 없습니다. a) 두 번째 호스트의 두 번째 공용 IP 주소를 얻거나 b) 호스트 헤더를 기반으로 내부 네트워크의 다른 서버로 요청을 전달하는 스마트 프록시를 설정할 수 있습니다. 나는 b)가 가능하다는 것을 확신하지만 그것이 어떻게 작동하는지 전혀 모른다. 그래서 다른 사람에게 당신이하려는 일인지 물어봐야한다.


0

질문을 올바르게 읽고 있다면 NAT (Network Address Translation)를 통해 IP 주소를 공유하는 두 대의 다른 컴퓨터가 있습니까? 그렇다면 하나의 사이트에서 다른 포트 (80이 아님)를 수신해야합니다. 라우터가 HTTP "호스트"메타 데이터를 기반으로 다른 컴퓨터에 요청을 보내도록하는 방법은 없습니다. 두 번째 서버의 두 번째 IP 주소를 얻는 것이 좋습니다.

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