Apache에서 누군가 웹 브라우저에서 IP 주소 만 사용할 때 웹 사이트에 대한 액세스를 비활성화하려면 어떻게합니까?


8

CentOS에서 아파치 웹 서버를 사용하고 있으며 웹 브라우저에서 서버의 IP 주소를 사용하여 사람들이 웹 사이트에 액세스하는 기능을 비활성화해야합니다. 누군가가 IP 주소를 탐색하려고 할 때 금지 된 오류 메시지가 표시되도록하고 싶습니다.

이를 위해 어떤 구성이 필요합니까?

답변:


10

기본 가상 호스트를 설정하기 만하면됩니다. 주석이 달린 예가 httpd.conf있거나 다음과 같은 사소한 일을합니다.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/html
</VirtualHost>

글쎄, 이것은 내 문제를 해결했습니다 .. 당신 모두에게 많은 감사 :)
— Amr Elkhedewy

7

mod_rewrite ( .htaccess파일 또는 기본 서버 컨텍스트 또는 ServerName호스트의 IP 주소 인 별도의 VirtualHost )를 사용하여이를 수행 할 수 있습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} 1.2.3.4 # Replace with your own IP address
RewriteRule .* - [F]

이것은 HTTP_HOST 헤더가 ip 주소 1.2.3.4와 일치하면 모든 요청이로 충족되어야합니다 403 Forbidden. 다른 HTTP_HOST 헤더가있는 요청 (예 : IP 주소가 아닌 실제 도메인 이름을 가진 요청)은 영향을받지 않아야합니다.


httpd.conf에서 작동하지 않았습니다
— Amr Elkhedewy

.htaccess 파일을 통해 작동했습니다. 아파치 구성에서 수행해야합니다.
— Amr Elkhedewy

2
httpd.conf를 편집 한 후 아파치를 다시 시작 했습니까? 그렇지 않으면 아파치는 새로운 구성에 대해 알 수 없습니다. 이것은 아파치를 다시 시작하지 않고 파싱되는 .htaccess와 다릅니다.
— etagenklo

물론 아무것도하지만, 변경
— 아 므르 Elkhedewy에게

1

IP를 통한 직접 액세스를 차단할 수 없습니다. 연결을 허용 한 다음 무엇을해야할지 결정해야합니다. 403, 404를 반환하거나 원하는 페이지로 리디렉션 할 수 있습니다. mod_rewrite로이를 수행 할 수 있습니다.

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^123\.123\.123\.123
 RewriteRule ^(.*)$ - [F,L]

웹 클라이언트가 전달한 HTTP HOST 헤더와 일치합니다. 다른 모든 요청은 통과합니다.

그러나 SEO 목적으로 URL을 정규화 할 수 있습니다.

이 방법을 사용하면 원하는 결과와 일치하지 않는 내용을 다시 작성하십시오.

RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]

참조 : https://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#canonicalurl

참조 : http://en.wikipedia.org/wiki/URL_normalization


httpd.conf에서 작동하지 않았습니다
— Amr Elkhedewy

.htaccess 파일을 통해 작동했습니다. 아파치 구성에서 수행해야합니다.
— Amr Elkhedewy

httpd.conf에서 작동하지만 다시 쓰기 엔진을 켜고 가상 호스트 지시문 안에 넣으십시오. 그렇지 않으면 기본 서버에만 적용됩니다. 참조 : httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
— jeffatrackaid

1

이 솔루션은 모든 경우를 다루지는 않습니다.

IP URL의 숫자 나 점을 % ## (예 : 1 x % 31 ... 8 x % 38)로 바꾸면 도메인 URL이 아닌 IP에 도착하게됩니다.

설명을 쉽게하기 위해 사용 된이 잘못된 IP를 가정하십시오. 123.45.6.789

모든 숫자와 점에 대해 두 가지 대안을 사용해야합니다. 도트는 % 2E이고 0..9는 % 30 .. % 39

RewriteEngine on
RewriteCond %{HTTP_HOST} (1|%31)(2|%32)(3|%33)(\.|%2E)(4|%34)(5%35)(\.|%2E)(6|%36)(\.|%2E)(7|%37)(8|%38)(9|%39)
RewriteRule . - [F]

미묘하게도 {1,3}으로 줄일 수 있고 유효한 IP로 제한 될 수 있지만, IP에 대해서는 그렇게 할 필요가 없습니다.

": 80"과 같은 포트를 잊지 마십시오. HTTP_HOST에 포함되어 있으며 SERVER_NAME이 (가) 신뢰할 수 없습니다.

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