帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Apache通过.htaccess对访问 IP 进行限制

Apache通过.htaccess对访问 IP 进行限制

2016-08-05 08:45:07 9802

问题描述


网站业务运行过程中会遇到一些恶意 IP 的攻击访问,或者非法盗链、恶意采集网站资源的情况。如果网站是使用 Apache 服务构建的,可以通过在根目录下的 .htaccess 文件中进行相关配置来限制某些 IP 对网站的访问。

解决方案


1、禁止特定 IP 访问:

Order Allow,DenyAllow from allDeny from 123.46.7.89

以上设置表示禁止 123.46.7.89 访问,其他IP可以正常访问。 

2、禁止 IP 地址段访问:

Order Allow,DenyAllow from allDeny from 192.168.1.

以上设置表示禁止IP地址段 192.168.1.0/24,也就是禁止 192.168.1.1----192.168.1.254 的 IP 访问。

解释一下设置中出现的关键字:

  • Allow 和 Deny 可以用于 Apache 的 .htaccess 文件中,来控制目录和文件的访问授权,Allow 表示允许,Deny 表示拒绝。

  • Order 关键字可以决定 Allow 和 Deny 起作用的顺序,简单的说就是谁排?最后,谁就有最终的决定权,具体如下:

    • Order Deny,Allow 意思是先检查是否有 Deny 规则,不论有没有 Deny 规则都会继续检查是否有 Allow 规则,如果有 Allow,Allow 规则的内容可以覆盖掉 Deny 规则。

    • Order Allow,Deny 恰好相反。 

例如:

Order Allow,DenyAllow from IP1Deny from all

这段规则实际是禁止了所有 IP 访问。按照谁在最后谁有最终决定权的原则,deny from all 就将 allow 的命令否决了。所以 IP1 也会被禁止,这个规则会禁止所有 IP 对网站的访问。

如果想只允许 IP1 访问,其他 IP 全部禁止,正确的写法应该是:

Order Deny,Allow    //先检查Deny,由Allow拥有决定权Deny from all       //Deny规则要求禁止所有IP的访问Allow from IP1      //Allow规则只允许IP1访问

按照这个原则,可以应用到网站中的常用规则有:

  1. 禁止特定 IP 的访问

    Order Allow,Deny 
    Allow from all Deny from IP1       //IP1替换成用户需要屏蔽的IP,比如123.46.7.89
  2. 禁止部分 IP(IP1,IP2,IP3),其他IP全部允许访问的两种写法

    Order Deny,AllowDeny from IP1 IP2 IP3


    或者

    Order Allow,DenyAllow from allDeny from IP1 IP2 IP3


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: