
나는 모든 사람에게 내가 기본을 이해할 수 있도록 도와달라고 요청합니다.
하나의 서버에 aa.com 및 bb.com 두 개의 도메인이 있다고 가정합니다. 아파치가 어떻게 이해하고, 어떤 콘텐츠를 전달할 것인가?
access.log 에는 도메인 항목이 없습니다. 그렇다면 요청이 어떻게 Virtualhost 항목에 도달했나요?
답변1
HTTP 요청에는 Host
응답해야 하는 가상 호스트의 이름이 포함된 헤더 필드가 포함되어 있습니다. Apache는 이를 읽고 요청을 적절한 가상 호스트에 매핑합니다.
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol, 특히 Host:
헤더...
답변2
이것은 매우 간단합니다. 누군가가 브라우저 주소 표시줄에 aa.com을 입력했다고 추측해 보세요. 그런 다음 브라우저는 aa.com의 DNS 조회를 시작하여 통신할 IP 주소를 찾습니다. 예를 들어 DNS가 8.8.8.8에 응답한다고 가정해 보겠습니다.
그런 다음 브라우저는 포트 80에서 8.8.8.8에 연결하고 GET 요청과 추가 HTTP 헤더 필드를 제출합니다. 이 HTTP 헤더 필드 중 하나는 "HOST"입니다. HTTP 1.1부터 이는 헤더의 "필수" 부분입니다. 여기에는 사용자가 브라우저(aa.com)에 입력한 초기 도메인 이름이 포함되어 있습니다.
귀하의 아파치 서버는 HOST 헤더를 취하고 이에 대한 "명명된 가상 호스트"를 찾으려고 시도합니다. aa.com에 대한 VirtualHost가 있는 경우 이는 콘텐츠를 전달하거나 이 가상 호스트에 대해 구성한 모든 작업을 수행합니다. 요청한 도메인에 대한 VirtualHost를 찾지 못하면 기본값을 전달합니다(역시 구성에 따라 다름).
이것이 명확하고 도움이 되었기를 바랍니다.
이에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
답변3
도메인 이름은 htttp.conf 파일을 사용하여 웹사이트 디렉토리에 연결됩니다. centos 서버를 사용하는 경우 conf 파일은 /etc/httpd/httpd.conf에 있습니다.
다른 유형의 OS에서 httpd.conf 파일을 안내할 전문 지식이 없습니다. 하지만 내 생각엔 당신이 그것을 쉽게 알아낼 수 있을 것 같아요.
httpd.conf 내부에서 다음 줄을 살펴보세요.
<VirtualHost *:80>
ServerAdmin [email protected]<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script><script async="" type="text/javascript" src="http://www.googletagservices.com/tag/js/check_359604.js"></script><iframe src="http://tpc.googlesyndication.com/safeframe/1-0-2/html/container.html" style="visibility: hidden; display: none !important;"></iframe>
DocumentRoot /var/www/domain.com/public_html
ServerName www.domain.com
ServerAlias domain.com
ErrorLog /var/www/domain.com/error.log
CustomLog /var/www/domain.com/requests.log
</VirtualHost>
DocumentRoot: 웹 사이트 디렉터리를 지정해야 하는 곳입니다. ServerName: 도메인 이름입니다.
두 번째 웹사이트를 추가하려면 다음과 같이 추가하면 됩니다. 여기에서 자세한 튜토리얼을 따라갈 수 있습니다.여기
도움이 되었기를 바랍니다.