ServerName과 ServerAlias는 어떻게 작동합니까?


62

추가 설명이 필요한 가상 호스트 구성의 다음 부분입니다.

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin example@example.com
  ServerName  141.29.495.999
  ServerAlias example.com
...

이것은 현재 가지고있는 것과 비슷한 구성 예입니다 (현재 도메인 이름이 없습니다).

<VirtualHost *:80>-포트 80에서이 서버에 접속할 수있는 IP에 대한 모든 HTTP 요청에 대해 다음 설정을 허용하십시오. 예를 들어, 둘 이상의 IP에서 서버에 액세스 할 수있는 경우이 지정 문을 둘 다 대신 하나로 제한 할 수 있습니다.

ServerName-HTTP 요청의 호스트 부분이이 이름과 일치하면 요청을 허용하십시오. 일반적으로 이것은 IP에 매핑되는 도메인 이름이지만이 경우 HTTP 요청 호스트는이 IP와 일치해야합니다.

ServerAlias -서버가 승인 한 대체 이름.

위 시나리오에서 혼란스러운 부분은 내가 ServerAlias mytestname.comHTTP 요청을 설정 한 다음 mytestname.com서버의 IP를 가리키는 DNS 레코드가 있어야 작동한다는 것입니다. 어떤 경우에 ServerAlias는 기본적으로 EXTRA ServerName 항목입니까?

내가 그 DNS 항목은 한 말 foobar.com = 141.29.495.999하지만 내가 가진 ServerName = 141.29.495.999ServerAlias에 foobar.com을 수용 할 기준이 없기 때문에 비어있는, 즉, foobar.com 있지만 올바른 IP로 확인됩니다 것을 의미 ServerName또는 ServerAlias?

또는 뭔가. 난 혼란스러워


1
마지막 두 번째 단락에서 단어를 잊었습니다. :-)
ThatGraemeGuy

답변:


105

다음과 같이 생각하십시오.

DNS는 전화 번호부 / 옐로우 페이지입니다. 누군가 전화를 걸고 싶을 때 이름을 찾아 전화 번호를 얻어 전화를 걸 수 있습니다. DNS는 동일하지만 컴퓨터에 대해 수행합니다. 누군가가 가고자 할 www.example.com때 DNS에 IP 주소를 요청하면 해당 IP 주소가있는 컴퓨터에 연결할 수 있습니다. 그것이 해결의 의미입니다. IP 주소를 확인하는 것은 Apache와 전혀 관련이 없습니다. 그것은 엄격하게 DNS 질문입니다.

ServerNameServerAlias더 많은 회사의 내부 전화 목록과 같다. 귀하의 웹 서버는 교환 대입니다. 서버로 들어오는 모든 연결을 수락합니다. 그런 다음 클라이언트 / 호출자는 원하는 이름을 알려주고 Apache 구성에서 해당 이름을 처리하는 방법을 찾습니다.

아파치 구성에서 이름이 ServerName / ServerAlias로 표시되지 않으면 아파치는 항상 첫 번째 VirtualHost를 제공합니다. 또는 VirtualHost가 없으면 요청에 어떤 호스트 이름이 주어 졌든 동일한 내용을 제공합니다.

ETA : 정상적인 연결을 위해 단계별로 :

  1. http://www.example.com브라우저에 입력 하십시오.
  2. 컴퓨터는 DNS 확인자에게 대화 할 때 사용해야하는 IP 주소를 묻습니다 www.example.com.
  3. 컴퓨터가 해당 IP 주소에 연결하고 대화하고 싶다고 말합니다 www.example.com( Host:HTTP 의 헤더).
  4. 웹 서버는의 구성 요청을 통해의 콘텐츠 요청으로 수행 할 작업을 파악합니다 www.example.com. 다음 중 하나가 발생할 수 있습니다.
    • www.example.comA와 나열 ServerName또는 ServerAliasA의 VirtualHost- 그래서, 다음은 콘텐츠를 제공하는 것을 가상 호스트 구성을 사용합니다.
    • 서버에는 VirtualHost가 전혀 없습니다. 그렇다면 서버는 httpd.conf의 구성을 사용하여 컨텐츠를 전달합니다.
    • 서버에 VirtualHost가 있지만 www.example.com그중 하나에 나열되지 않은 경우 목록에있는 첫 번째 Virtualhost가 컨텐츠를 전달하는 데 사용됩니다.

따라서 HTTP 요청의 호스트 부분이 www.example.com인 경우 DNS는 해당 이름의 IP 주소를 확인하고 HTTP 요청 호스트 부분은 실제로 IP가됩니다. 서버에 도달하면, 아파치는 요청을 요청 알게 될 것이다 www.example.com하고있을 경우 ServerName또는 ServerAlias해당 도메인 이름에 대한 지침을이 문서 루트를 제공 할 수 있습니까?
njp

아니요-HTTP 요청 부분은 여전히 ​​호스트 이름입니다. 좀 더 설명하겠습니다.
Jenny D

The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.. 나는 이것을 테스트했다. 맞지만 첫 번째 가상 호스트인지 확실하지 않습니다. 정보 감사합니다. +1
SMMousavi

19

ServerName을 정의하지 않으면 apache2는 / etc / hosts에서 추측합니다. ServerAlias는 선택 사항입니다. 가장 일반적인 사용 사례는

ServerName example.com
ServerAlias www.example.com

도메인 등록 및 DNS 레코드 설정과 같이 요청이 웹 서버 IP에 도달하는지 확인하는 것은 아파치 2의 일이 아닙니다. 도메인 및 DNS 레코드없이 테스트 및 개발을위한 가장 일반적인 방법은 example.com이 서버의 IP를 가리 키도록 로컬 시스템 / etc / hosts 파일을 설정하는 것입니다.

192.168.0.12 example.com
192.168.0.12 www.example.com

0

https://httpd.apache.org/docs/2.4/vhosts/name-based.html 주제에 대한 공식 문서를 읽는 것이 좋습니다.

그것은 말한다 "일치 서버 이름이나 ServerAlias에이 후, 사용됩니다 일치하는 첫 번째 나열된 가상 호스트를 가장 구체적인 일치하는 IP 주소와 포트 조합을 포함하는 가상 호스트의 설정에서 발견되지 않는 경우." . 따라서 귀하의 경우 "foobar.com"에 액세스하면 IP 141.29.495.999와 일치하는 첫 번째 VirtualHost 항목이 httpd에 의해 사용됩니다

같은 문서에 "많은 서버가 여러 이름으로 액세스하기를 원합니다. 이것은 ServerAlias ​​지시문으로 가능합니다." 따라서 ServerAlias를 추가 ServerName 항목으로 간주 할 수 있습니다.

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