Apache2 VirtualHosts를 해결하는 방법은 무엇입니까?

Apache2 VirtualHosts를 해결하는 방법은 무엇입니까?

내가 이해한 바에 따르면, 브라우저를 사용하여 웹 사이트에서 URL을 요청할 때 운영 체제가 가리키는 DNS 서버가 서버의 DNS 이름과 연결된 IP 주소를 알고 있는지 확인한 다음 DNS 서버가 요청한 서버를 찾는지 묻습니다. , 브라우저가 웹 서버에서 URL을 요청할 수 있도록 ip를 반환합니다.

이 시점에서 브라우저가 DNS 이름 대신 서버의 IP 주소를 사용하여 URL을 요청하고 있다는 점을 고려하면 웹 서버(Apache2)는 DNS 이름과 관련된 올바른 VirtualHost를 반환하는 방법을 어떻게 알 수 있습니까?

내 머리로는 이것이 브라우저 헤더와 관련이 있다고 말하지만 그것에 대해 완전히 확신할 수는 없습니다.

노트:이것은관련 솔루션

답변1

HTTP 요청에는 요청 경로뿐만 아니라 많은 헤더가 있습니다. 이러한 헤더 중 하나( Host:헤더)는 요청의 호스트 이름입니다(unix.SE의 경우 "unix.stackexchange.com"). Apache는 이를 확인하고 요청을 적절하게 처리합니다.

Host:참고 사항: HTTPS는 헤더가 암호화되었기 때문에 IP당 하나의 인증서로 제한되었습니다 . 서버가 해당 헤더를 얻을 때까지 어떤 인증서를 보낼지 알 수 없지만 요청(인증서가 필요함)을 받을 때까지는 헤더를 얻을 수 없습니다. 이 문제는 Host초기 핸드셰이크에 헤더와 같은 것을 추가하는 서버 이름 표시 확장을 사용하여 TLS에서 해결됩니다 .

답변2

HTTP 가상 호스트는 HTTP 서버를 자체 "프록시 서버"로 사용하여 작동하며 브라우저는 대상 가상 호스트를 식별하는 호스트 헤더를 보냅니다.

관련 정보