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.