해당 도메인 이름 대신 IP 주소를 입력하면 웹 사이트가 표시되지 않는 이유는 무엇입니까? [닫은] has address 93.184.216.34 example.com has IPv6 address

> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

Chrome 93.184.216.34대신 입력 합니다 http://example.com. 웹 사이트를로드하지 않습니다. 왜?



답변

Host실제로 원하는 사이트를 얻으려면 적절한 HTTP 헤더가 필요하기 때문에

동일한 IP 주소로 여러 웹 사이트를 호스팅 Host하고 클라이언트가 지정한 HTTP 헤더 (현재 HTTPS의 경우 TLS SNI 값)를 기반으로 웹 사이트를 구분하는 것이 매우 일반적 입니다.

즉, http://example.com브라우저에 입력 하면 Host헤더는 example.com이지만 입력 한 경우에는 그렇지 않습니다 93.184.216.34. 두 경우 모두 동일한 웹 서버에 연결되지만 다른 응답을받습니다 (이 경우 200 대 404).


답변

일반적으로 웹 서버는 “가상 서버”기술을 사용하고 요청한 도메인 이름 내에서 웹 서버의 IP 주소가 아닌 HTTP 요청에 응답 할 수 있기 때문입니다. 하나의 IP 주소에 둘 이상의 도메인 이름을 숨겨주었습니다.

예를 들어 Apache 웹 서버는 다음 섹션을 사용하여 IP 주소로 HTTP 요청에 응답 할 수 있습니다.

<VirtualHost *:80>
ServerName Default
...
</VirtualHost>

또는 구성에 VirtualHost가 전혀 사용되지 않은 경우.

Apache의 VirtualHost 기능은 1996 년에 도입되었습니다.


답변

Apache 에서는 단 하나의 IP 주소를 사용하여 많은 웹 사이트를 호스팅 할 수 있습니다. 이것을 가상 호스팅이라고합니다. 독립형 도메인까지 하위 도메인을 만드는 방법입니다. 각 도메인 / 하위 도메인에 대한 VirtualHost 지시문이 포함 된 Apache 구성 파일을 설정하면됩니다.

example1.com과 example2.com이라는 두 개의 가상 호스트가있는 예제 HTTP 서버는 다음과 같습니다 (IP 주소 정의).

<VirtualHost 93.184.216.34:80>
  ServerName example1.com
  ServerAlias www.example1.com
  DocumentRoot /var/www/example1.com
</VirtualHost>

<VirtualHost 93.184.216.34:80>
  ServerName example2.com
  ServerAlias www.example2.com
  DocumentRoot /var/www/example2.com
</VirtualHost>

다음과 같이 보일 수도 있습니다 (이름 기반 정의).

<VirtualHost *:80>
  ServerName example1.com
  ServerAlias www.example1.com
  DocumentRoot /var/www/example1.com
</VirtualHost>

<VirtualHost *:80>
  ServerName example2.com
  ServerAlias www.example2.com
  DocumentRoot /var/www/example2.com
</VirtualHost>

두 경우 모두, 두 개의 가상 호스트 레코드가 내부적으로 메모리에 작성되고 Apache가 URI 요청이 도착한시기와 비교하기 위해 사용됩니다.

사용자가 사용자 에이전트를 통해 IP 주소를 입력하면 구성 파일에 나열된 첫 번째 가상 호스트가 기본 도메인 (이 경우 example1.com)으로 사용됩니다.

사용자가 도메인 이름을 입력하면 요청이 연결된 IPNA를 제공하는 공용 인터넷 DNS 네트워크 (ICANN)로 전송됩니다. ICANN 등록 기관 (예 : GoDaddy)을 통해 둘 다 등록했습니다. ICANN 네트워크의 모든 DNS 서버에 전파가 적용되기 전에이 두 가지가 모두 정확하고 시간이 약간 필요합니다. 요즘에는 최대 24 시간이 걸릴 수 있습니다.

요청이 Apache HTTP 서버로 라우팅되면 IP 주소 및 도메인 이름이 내부 VirtualHost 레코드 목록과 일치합니다. 하나가 발견되면 문서 루트는 오브젝트 에이전트에 대한 전체 파일 시스템 경로를 형성하여 사용자 에이전트로 다시 리턴하는 데 사용됩니다. 그렇지 않은 경우 HTTP 404가 관련 오류 문서와 함께 전송됩니다.


답변

“집”용어를 사용하고 싶습니다.

집에 이름없이 편지를 쉽게 보낼 수 있으며 집에 도착할 것입니다.

상대방의 이름을 입력하면 원하는 수신자에게 전송됩니다.

목적지는 동일하지만 집에 도착했을 때 처리되는 방식이 다릅니다.

사이트 (예 : www.example.com)를 지정하면 서버는 요청을 처리하는 방법과 요청 대상 호스트 및 서비스 제공 사이트를 알고 있습니다.


답변

검색 할 핵심 용어는 “이름 기반 가상 호스팅”입니다.

사람들은 동일한 웹 서버에 여러 호스트 이름을 할당하고 각 호스트 이름에 대해 서로 다른 컨텐츠를 제공하려고합니다. 이를 가상 호스팅이라고합니다 (최신 가상 머신 개념과 혼동하지 말 것).

초기에 가상 호스팅은 여러 IP 주소를 서버에 할당하여 수행되었으므로 서버는 사용 된 IP 주소를 기반으로 다른 내용을 보낼 수 있었지만 이는 낭비로 간주되었습니다.

따라서 “호스트”헤더는 처음에 확장으로 도입되었지만 나중에 1997 년에 http 1.1 사양의 필수 부분이되었습니다.이 헤더는 클라이언트가 요청한 호스트 이름을 지정합니다. 그런 다음 서버는 헤더 값에 따라 다른 컨텐츠를 제공 할 수 있습니다.


답변

웹 서버의 비용을 낮추기 위해 많은 웹 서버가 여러 웹 사이트를 호스팅합니다. apache2 / nginx / etc에서 가상 호스트 또는 Vhost를 사용하여이를 수행합니다. 따라서 웹 사이트의 IP 주소로 직접 이동하면 “Apache is working”화면이 표시되거나 웹 서버의 기본 웹 사이트로 리디렉션 될 가능성이 높습니다.

Vhost는 들어오는 웹 사이트 주소를보고 사용 가능한 Vhosts 파일의 ServerName 또는 ServerAlias ​​이름과 비교합니다. 둘 중 하나가 일치하면 해당 특정 웹 사이트가로드됩니다.

웹 사이트에 대량의로드 (고유 순 방문자 / 페이지 조회수)가 있거나 고부하 애플리케이션 (youtube.com, 페이스 북 등)을 구동하지 않는 한 공유 서버에서 운영하는 것이 더 비용 효과적 일 수 있습니다. WordPress 블로그 웹 사이트를 운영하기 위해 전용 서버 (월 $ 60에서 시작)를 얻는 것은 돈 낭비입니다. 한 서버에 200 개 이상의 웹 사이트가있는 서버에서 공유 플랫폼을 얻는 것이 좋습니다. 비용은 $ 5 / mo의 영역에서 더 많을 것입니다.

이를 수행하는 또 다른 이유는 IP 주소가 없기 때문입니다. IPv4 주소가 충분하지 않습니다. 그것은 가정 / 비즈니스 네트워크에 NAT를 사용하고 우리가 남은 Vhost를 사용하는 것입니다. IPv6이 메인 스트림이 되더라도 서버는 Vhost (서버 비용)를 고수 할 것입니다.


답변

전용 IP 주소는 비싸지 만 서버에 새 웹 사이트를 만드는 것은 기본적으로 무료입니다.

호스팅 회사는 물리적 서버를 가리키는 단일 IP 주소를 임대 한 다음 “가상 호스트”기능을 사용하여 해당 IP 주소에서 수천 개의 웹 사이트를 호스팅합니다.

우체국 주소 만 적고 상자 번호가없는 경우 사서함이있는 것처럼 생각하면 메일이 배달되지 않습니다.