Apache2에서 기본 VirtualHost를 비활성화하는 방법은 무엇입니까?


10

설계 상 apache2에서 알 수없는 호스트에 대한 http 요청은 처음로드 된 VirtualHost로 보내집니다. 이 기능을 비활성화하는 방법이 있습니까? 다르게 말하면, 사용자가 명시 적으로 명명 된 VirtualHost 정의에만 도달 할 수있는 웹 서버를 갖고 싶습니다. ServerName 또는 ServerAlias ​​행에 명시 적으로 언급되지 않은 다른 호스트 이름은 자동으로 무시해야합니다.

이것이 가능한가?

Listen 80
NameVirtualHost *

<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>

업데이트 : 아래 및 다른 곳에서 제안한 것처럼 요청을 자동으로 무시하는 것은 좋은 생각이 아니며 HTTP의 RFC를 손상시킬 수 있습니다. 그러나 가상 호스트는 여러 개의 별도의 물리적 HTTP 서버가 있음을 시뮬레이트하도록 설계되었으므로 자동 무시 접근 방식은 나에게 적합하지 않습니다. IP 기반 가상 호스팅 및 일부 IP를 방화벽으로 차단하는 것과 동일합니다 (아마도 모든 클라이언트에 해당되지는 않음).

답변:


4

"조용히 실패"가 좋은 아이디어인지 확실하지 않습니다. 당신은 클라이언트에게 적어도 줘야 일부 무슨 일이 있었는지의 표시. 아마도 http 410 "gone"오류를 보낼 수 있습니다. 이와 같은 것이 트릭을 수행해야합니다.

RewriteRule ^.*$ - [G]

또한 빈 html 페이지 일 수있는 사용자 정의 410 오류 문서를 지정할 수 있어야합니다.


나는이 솔루션을 스스로 발견하게되었습니다. mod_rewrite 및 "RewriteEngine On"을로드하기위한 행을 추가하여 필요하지 않을 수도 있음을 나타냅니다. 그들은 나를 위해 있었다. :)
Harvey

2
또한 우리가 방금 또는 금지라고 말하고 더 중요한 것은 "-"는 대체를 막기 때문에 정규식은 훨씬 간단 할 수 있습니다.RewriteRule . - [F]
Harvey

17

다시 쓰기 규칙을 포함하지 않는 다른 방법은 다음과 같습니다.

<VirtualHost _default_:*>
    <Location />
        Deny from all
        Options None
        ErrorDocument 403 Forbidden.
    </Location>
</VirtualHost>

2
이것이 허용되는 솔루션이어야합니다. +1
Greg Schmit

이 솔루션에 대해 잘 모르겠습니다. VHOST 파일이 여러 개 있는데 이것으로 새로운 파일을 만들 수 있습니까? 나는 그것을 시도하고 파일 이름을 001.default.conf로 지정했지만 여전히 하위 도메인을 리디렉션하고 있습니다.
Frantumn

@Frantumn 질문에서 언급했듯이 "알 수없는 호스트에 대한 모든 HTTP 요청은 첫 번째로로드 된 VirtualHost 로 보내집니다 ". <VirtualHost>따라서이 "default" 는 서버 구성에서 먼저 정의해야합니다 . 정확히 어떤 파일이 있어야하는지는 구성에 따라 다릅니다. 그러나 "리디렉션 된 하위 도메인"문제는 관련이없는 문제 일 수 있습니다.
MrWhite

허. 내 서버를 가리키는 다른 도메인을 사용하는 경우 403을 수행하지 않고 서버 이름이 일치하지 않더라도 찾은 첫 번째
가상

1

이것은 나를 위해 일했다

<VirtualHost x.x.x.x:80 [x:x::x:x:x:x]:80>
  ServerName myactualservername.com
  ServerAlias *
  <Location />
    Deny from all
    Options None
    ErrorDocument 403 Forbidden.
  </Location>
</VirtualHost>

xxxx를 실제 ipv4로 바꾸고 ipv6을
myactualservername.com을 기계가 제공하는 실제 웹 사이트로 바꾸십시오.

이름 기반 가상 호스트를 사용하고 있습니다.
이 솔루션에 대한 크레딧은 https://serverfault.com/a/82309/459796 로 이동
하십시오.

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