Apache 2.4는 URL을 특정 IP로 제한


14

특정 URL을 네트워크 외부에서 특정 IP 주소로만 사용할 수 있도록 제한하려고합니다. 외부 사용자가 IP 목록이 아닌 해당 URL에 액세스하려고하면 홈페이지로 리디렉션되어야합니다.

이것이 운없이 지금까지 시도한 것입니다. 마지막 부분은 IP에 관계없이 모든 사람을 홈페이지로 리디렉션합니다.

<Location "/secret">
#    <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
#    Redirect 303 "/secret" /
#    </If>

RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]

LogLevel debug rewrite:trace6
</Location>

추신 : / secret URL은 사실상 가상 URL이며 드라이브에 실제로 존재하지 않습니다.


If 문은 주석 처리되어 있습니까? 다시 쓰기 사용- RewriteEngine On?
— user9517

<If> 문은 내가 시도한 버전입니다. RewriteEngine On 지시문은 앞서 선언되었습니다. 즉, 모든 사람 리디렉션 이유
— 데니스 Rendler

1
아파치 2.4의 요청에 따라 유효하지 않습니다 때문에, 당신이 선택한 답변을 해제 표시한다고 생각합니다 (그것은 지나가는 사람들에게 잘못된 정보 제공)
— Erenor 파스

답변:


4

사용 Order, Deny그리고 allow당신의 가상 호스트 또는 위치에 대한 액세스 권한이있는 사용자를 지정할 수 있습니다.

<VirtualHost *:80>
    ServerName example.net
    DocumentRoot /docroot

    <Directory "/docroot">
        Order Deny,Allow
        Deny from all
        Allow from 10.10.10.10
        Allow from 10.10.11.0/24
    </Directory>   
</VirtualHost>

리디렉션과 관련하여 맞춤 오류 페이지를 생각해보세요 . 모든 무단 액세스는 403 오류를 유발하므로 쉽게 평가할 수 있기 때문에 이것은 훨씬 더 일반적입니다.

나는 아파치로 이것을 한 적이 없지만 nginx와 함께이 전략을 사용합니다. 아파치의 경우 다음과 같이해야합니다.

ErrorDocument 403 http://homepage.example.com

사용자 정의 오류 문서는 전역, 가상 호스트 또는 디렉토리 컨텍스트에서 사용될 수있는 ErrorDocument 지시문을 사용하여 구성됩니다. AllowOverride가 FileInfo로 설정되어 있으면 .htaccess 파일에서 사용될 수 있습니다. (아파치 문서에서)


2
이것은 Apache httpd 2.2 구성 세트처럼 보입니다. 여전히 2.4에서 작동합니까?
— user9517

적어도 ErrorDocument부분은 2.4 문서에서 나온 것입니다. 나는 nginx를 주위이기 때문에, 아파치를 사용하지만 가정하지 않는 Order, Deny그리고 Allow아파치 2.4에서 주변에 아직도
— ansi_lumen

고마워,하지만 난 도움이되지 않습니다. 언급을 잊어 버렸지 만 / secret URL은 실제로 가상 URL이며 실제로 드라이브에 존재하지 않습니다. 자체 URL은 index.php에서 다시 작성되었으므로 <Location> 지시문을 사용했습니다.
— Denis Rendler

4
이 문법은 Apache 2.4에서 더 이상 사용되지 않습니다
— Luca Reghellin

1
이것이 왜 대답입니까? 질문에서 알 수 있듯이 이것은 Apache 2.2가 아닌 2.4 용입니다 ... 작동하지 않습니다.
— Jeremy

23

주문, 거부 및 허용 옵션이 Apache 2.4에서 다음으로 대체되었습니다.

<Directory /var/www/mysite.com/htdocs/public>
    Require all granted
</Directory>

다음을 사용하여 주소를 명시 적으로 제한 할 수 있습니다.

<Directory /var/www/mysite.com/htdocs/public>
    Require all granted
    Require not ip 192.168.0.1
</Directory>

모두를 제한하고 하위 집합 만 다음을 사용하도록하려면 정반대도 마찬가지입니다.

<Directory /var/www/mysite.com/htdocs/public>
    Require host example.com
    Require ip 192.168.0.1
</Directory>

자세한 정보는 Apache 2.4 액세스 제어 문서에 있습니다.

귀하의 질문과 관련하여 (주석을 추가 할 요점이 없기 때문에 내 자신의 편집) URL을 URL 경로로 설정하여 ErrorDocument를 간단하게 설정할 수 있어야합니다.

<Directory /var/www/mysite.com/htdocs/public>
    Require host example.com
    Require ip 192.168.0.1
    ErrorDocument 401 /index.html
</Directory>

도움이 되었기를 바랍니다!


감사합니다, @Linztm! 그러나 이것은 부분적으로 만 내 문제를 해결합니다. 사용자를 차단하고 싶지 않고 홈페이지로 리디렉션하고 싶습니다.
— Denis Rendler

도메인 및 프로토콜을 포함한 전체 URL을 제공하는 경우에만 ErrorDocument 지시문으로 작업하는 것 같습니다. 더 연구하겠습니다. 감사.
— Denis Rendler

allow더 이상 사용되지 않지만 사용해야 할 경우 Require 127.0.0.1 로컬 컴퓨터에서 외부 주소로 액세스를 허용 하는 경우가 하나 이상 있습니다. 여기서 허용 구문은 127 주소에서만 허용됩니다.
— Alexei Martianov

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