Apache 서버가 IP가 아닌 도메인에 대한 요청 만 수락하도록하십시오 있습니다. 서버의

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

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

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



답변

당신이 사용할 수있는 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


답변

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

따라서 아파치 설정에서 :

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

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


답변

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

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


답변