부분 ServerName을 사용하여 Apache 2 가상 호스트를 정의하는 방법이 있습니까?

부분 ServerName을 사용하여 Apache 2 가상 호스트를 정의하는 방법이 있습니까?

Apache 2 구성 블록을 생성하는 도구가 있습니다. 실제 ServerName이 무엇이든 관계없이 생성되는 내용을 원하지만 실제로 대상 시스템의 Apache 구성을 실행/분석할 필요는 없습니다.

즉, 나에게 필요한 것은 다음과 같습니다.

<VirtualHost *>
   ServerName foobar    // <-- no top level domain
   ...
</VirtualHost>

문서를 읽어보면 ServerName 필드는 항상 정규화된 도메인 이름이어야 하므로 본질적으로 대상 서버의 FQDN을 모르면 가상 호스트 블록을 작성할 수 없는 것 같습니다. 그게 사실인가요, 아니면 해결 방법이 있나요?

답변1

예, ServerName실제 서버 식별이어야 하지만 IP 주소일 수도 있습니다. ServerAlias반면에 와일드카드를 포함할 수 있습니다. 선적 서류 비치이것을 언급합니다.

하지만 필수는 아니라고 하더군요

ServerName이 지정되지 않은 경우 서버는 먼저 운영 체제에 시스템 호스트 이름을 요청하고, 실패할 경우 시스템에 있는 IP 주소에 대해 역방향 조회를 수행하여 클라이언트가 볼 수 있는 호스트 이름을 추론하려고 시도합니다.

답변2

둘 다ServerName도 아니고ServerAliasVirtualHost 블록의 필수 지시문입니다.

간단히 생략할 수 있습니다.

매뉴얼에서는 그렇게 할 때를 설명합니다:

no를 ServerName지정하면 서버는 먼저 운영 체제에 시스템 호스트 이름을 요청하고, 실패할 경우 시스템에 있는 IP 주소에 대한 역방향 조회를 수행하여 클라이언트가 볼 수 있는 호스트 이름을 추론하려고 시도합니다.

이것이 바로 당신에게 필요한 것일 수 있습니다.

추가적으로,실제로해당 지시어는 거의 모든 문자열도 허용합니다. 또는 및
같은 단일 단어 도 작동하며, FQDN과 유사해 보이지만 실제 작동하는 DNS 이름이 아닌 경우에도 작동합니다. 이와 같은 것을 사용하면 시작 경고가 표시될 수 있습니다. 오류 로그( 해당 문자열을 에 추가하면 방지할 수 있음 )로 인해 Apache httd가 VirtualHost 블록을 존재하는 다른 블록과 구별할 수 없고 설정이 적용되지 않는 상황이 발생할 수 있습니다.localhosttestexamplethere.is.no.tld.named.serverfault./etc/hostshttps://httpd.apache.org/docs/2.4/vhosts/details.html

관련 정보