Apache 2.4는 URL을 특정 IP로 제한합니다.

Apache 2.4는 URL을 특정 IP로 제한합니다.

네트워크 외부에서 특정 IP 주소에만 특정 URL을 사용할 수 있도록 제한하려고 합니다. 외부 사용자가 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이며 드라이브에 물리적으로 존재하지 않습니다.

답변1

Require [ip|host|env]가상 호스트 또는 위치에 액세스할 수 있는 사람을 지정하는 데 사용합니다 .

    <Directory "/docroot">
        Require ip 10.10.11.12
    </Directory>   

리디렉션과 관련하여 다음 사항을 생각해 보세요.사용자 정의 오류 페이지. 모든 무단 액세스는 403 오류를 유발하고 쉽게 평가할 수 있기 때문에 이는 훨씬 더 일반적입니다.

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

ErrorDocument 403 http://homepage.example.com

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

답변2

Order, Deny 및 Allow 옵션은 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 경로로 설정된 ErrorDocument를 간단히 설정할 수 있습니다.

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

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

답변3

Apache 2.4의 경우 <RequireAny>를 사용할 수 있습니다. vhost 또는 .htaccess 파일에서 수행할 수 있습니다....

SetEnvIF IP xxx.xxx.xxx.xxx AllowThisIP  # Or X-Real-IP
SetEnvIF IP yyy.yyy.yyy.yyy AllowThisIP
<RequireAny>
  Require env AllowThisIP
  Require host example.com
</RequireAny>

아파치 문서https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany

관련 정보