![부분 ServerName을 사용하여 Apache 2 가상 호스트를 정의하는 방법이 있습니까?](https://rvso.com/image/769261/%EB%B6%80%EB%B6%84%20ServerName%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20Apache%202%20%EA%B0%80%EC%83%81%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%A0%95%EC%9D%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
Apache 2 구성 블록을 생성하는 도구가 있습니다. 실제 ServerName이 무엇이든 관계없이 생성되는 내용을 원하지만 실제로 대상 시스템의 Apache 구성을 실행/분석할 필요는 없습니다.
즉, 나에게 필요한 것은 다음과 같습니다.
<VirtualHost *>
ServerName foobar // <-- no top level domain
...
</VirtualHost>
문서를 읽어보면 ServerName 필드는 항상 정규화된 도메인 이름이어야 하므로 본질적으로 대상 서버의 FQDN을 모르면 가상 호스트 블록을 작성할 수 없는 것 같습니다. 그게 사실인가요, 아니면 해결 방법이 있나요?
답변1
예, ServerName
실제 서버 식별이어야 하지만 IP 주소일 수도 있습니다.
ServerAlias
반면에 와일드카드를 포함할 수 있습니다.
선적 서류 비치이것을 언급합니다.
하지만 필수는 아니라고 하더군요
ServerName이 지정되지 않은 경우 서버는 먼저 운영 체제에 시스템 호스트 이름을 요청하고, 실패할 경우 시스템에 있는 IP 주소에 대해 역방향 조회를 수행하여 클라이언트가 볼 수 있는 호스트 이름을 추론하려고 시도합니다.
답변2
둘 다ServerName
도 아니고ServerAlias
VirtualHost 블록의 필수 지시문입니다.
간단히 생략할 수 있습니다.
매뉴얼에서는 그렇게 할 때를 설명합니다:
no를
ServerName
지정하면 서버는 먼저 운영 체제에 시스템 호스트 이름을 요청하고, 실패할 경우 시스템에 있는 IP 주소에 대한 역방향 조회를 수행하여 클라이언트가 볼 수 있는 호스트 이름을 추론하려고 시도합니다.
이것이 바로 당신에게 필요한 것일 수 있습니다.
추가적으로,실제로해당 지시어는 거의 모든 문자열도 허용합니다. 또는 및
같은 단일 단어 도 작동하며, FQDN과 유사해 보이지만 실제 작동하는 DNS 이름이 아닌 경우에도 작동합니다. 이와 같은 것을 사용하면 시작 경고가 표시될 수 있습니다. 오류 로그( 해당 문자열을 에 추가하면 방지할 수 있음 )로 인해 Apache httd가 VirtualHost 블록을 존재하는 다른 블록과 구별할 수 없고 설정이 적용되지 않는 상황이 발생할 수 있습니다.localhost
test
example
there.is.no.tld.named.serverfault.
/etc/hosts
https://httpd.apache.org/docs/2.4/vhosts/details.html