Apache 如何使用 htaccess 进行 IP 限制
Apache 服务器或虚拟机,有时候为了防止网站被垃圾留言、镜像、刷流量等恶意骚扰,需要通过 htaccess 来屏蔽一些 IP、IP 段禁止访问。
htaccess 屏蔽 IP 有两种方法
第一种方案:
Order Deny, Allow
Deny from x.x.x.x #屏蔽某个IP:x.x.x.x
Deny from x.x.x #屏蔽IP段:x.x.x.1 ~ x.x.x.255 之间的IP
Deny from x.x #屏蔽IP段:以x.x开头的IP
这种方法确实可以实现屏蔽的效果,但如果 IP 被转化或者被伪装,他就失效了。
例如网站使用了 WAF 防火墙,这种屏蔽 IP 的方法就会失效,不信你可以试一下,这种情况可以使用第二种方案 。
第二种方案:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-For} (x.x.x.x) [NC]
RewriteRule (.*) - [F]
</IfModule>
此时在访问,访问已被禁止了。虽然用了 waf 前端防火墙改变了访客IP,当访问依然被禁止了,也就是说此时屏蔽的是真实IP,而不是访客IP。
屏蔽多个 IP 的配置方法:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-For} (x1.x1.x1.x1|x2.x2.x2.*|x3.x3.*.*) [NC]
RewriteRule (.*) - [F]
</IfModule>
配置说明:
在配置中既包含了真实访客 IP,不管 IP 有没有被伪装都可以获取到真实的 IP ,所以实际屏蔽 IP 效果这种方法比第一种更好。
RewriteCond %{HTTP:X-Forwarded-For}
简单地阻止请求(403禁止)并且不重定向:
RewriteRule ^ - [F]
如果您有一个自定义 403 ErrorDocument,则需要创建一个异常,将上方的阻止请求修改为以下配置。
RewriteRule !^403\.html$ /403.html [R,L]
希望本文可以对你解决问题有所帮助。
版权声明:本文为原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.oneue.com/articles/1910.html