Apache 서버가 IP가 아닌 도메인에 대한 요청 만 수락하도록하십시오


9

Apache 2.2.15를 실행하는 CentOS 서버가 있습니다. 서버의 IP 주소가 198.51.100.4이고 브라우저 http://198.51.100.4에 쓰면 내 웹 사이트로 이동합니다.

나는 이것을 막고 싶다. FQDN에서만 액세스 할 수있는 웹 사이트 (예 : http://example.com/) 를 원합니다 .

IP 주소를 방문 할 때 웹 사이트에 액세스 할 수 없도록 서버를 구성하려면 어떻게해야합니까?



질문이 내가 연결 한 복제본과 완전히 일치하지는 않지만 해당 질문에 대한 답변도이 질문에 대한 답변입니다.
Jenny D

왜 그렇게했는지 궁금합니다. 역 DNS는 것입니다.
njzk2

답변:


7

당신이 사용할 수있는 Alias *이 당신이 사용해야하는, 가상 호스트에서 허용 thoose 이외의 트래픽이를 잡으려고 마지막 위치 와 가상 호스트를 *별칭으로.

이와 같이 정의 된 도메인 만 제공됩니다.

<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/default
...
</VirtualHost>

<VirtualHost *:80>
ServerName another.mywebsite.com
DocumentRoot /var/www/another
...
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>

내 예에서는 mywebsite.com 및 another.mywebsite.com 만 허용되며 다른 모든 도메인 또는 IP는 트래픽이 취소됩니다.

트래픽을 취소하려면 리디렉션을 사용 -하여 오류 코드를 추가하십시오. 예를 들어 RewriteRule을 사용하여 406 Not Acceptable ( R=406) 로 리디렉션합니다 .

다음은 리디렉션 코드 목록입니다. https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP


감사! 나는 당신의 방법을 시도하고 작동합니다. 그러나 나는 조금 바뀌었다. 새 가상 호스트를 만들고 ServerName으로 서버의 IP 주소 + RewriteRule :)
antiks

11

"거부 됨"오류 또는 기타 사항을 제공하는 기본 가상 호스트를 추가 할 수 있습니다. 브라우저는 모든 일치하는 URL의 호스트하지 않고 웹 서버에 올 때 ServerName또는 ServerAlias다른 가상 호스트의 행 기본 가상 호스트에 의해 제공됩니다.

따라서 아파치 설정에서 :

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>

1

다음과 같은 다시 쓰기 규칙이 필요합니다.

 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^mywebsite.com$
 RewriteRule /.* https://mywebsite.com/ [R]

이것은 OP가 요청한 것을 수행하지 않습니다.
궤도에서 가벼움 레이스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.