Apache 2.2.15를 실행하는 CentOS 서버가 있습니다. 서버의 IP 주소가 198.51.100.4이고 브라우저 http://198.51.100.4에 쓰면 내 웹 사이트로 이동합니다.
나는 이것을 막고 싶다. FQDN에서만 액세스 할 수있는 웹 사이트 (예 : http://example.com/) 를 원합니다 .
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]