前景:
我们在部署网站的时候,通常可能有需要屏蔽一些ip,或者一些内部系统只需要自己访问,所以我们需要根据需求设置一些访问规则,本文就是介绍通过rewrite方式来设置只允许某些ip或者ip段访问网站,当然如果是有服务器控制管理权限的可以直接在web端上设置,但如果是虚拟主机或者没有服务器权限,那么本文内容将可以起到作用。
如果只是设置屏蔽某些ip或ip段访问,可以参考:利用rewrite重写来禁止ip访问
其他相关文章:
iis6、ii7、apache利用rewrite规则屏蔽域名访问
说明:
1、以下规则(x.x.x.x|x.x.x.)里面的ip根据实际需要修改,ip为允许的ip。
2、多个ip或者ip段,用英文状态下的 | 字符隔开。
3、IP段填写,最后一位ip数字不填,但“.”要保留。比如1.2.3.*这个ip段,要写成1.2.3.
以下示例设置只允许1.2.3.4和3.4.5.6.*访问网站
Apache
规则文件.htaccess(手工创建.htaccess文件到站点根目录,如果存在直接在里面添加)
<IfModule mod_rewrite.c>
RewriteEngine On
#Block ip
RewriteCond %{http:X-Forwarded-For}&%{REMOTE_ADDR}&%{http:X-Real-IP} !(1.2.3.4|4.5.6.) [NC]
RewriteRule (.*) - [F]
</IfModule>
windows2003 iis6
windows2003需要在iis6的isapi筛选器上加载rewrite.dll,在规则文件里面添加以下规则。
RewriteCond %{HTTP_X_FORWARDED_FOR}&%{REMOTE_ADDR}&%{HTTP_X_Real_IP} !(1.2.3.4|4.5.6.) [NC]
RewriteRule (.*) - [F]
windows2008 iis7
规则文件web.config (手工创建web.config文件到站点根目录)
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="1"> <match url="(.*)" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_X_FORWARDED_FOR}&{REMOTE_ADDR}&{HTTP_X_REAL_IP}" pattern="(1.2.3.4|4.5.6.)" negate="true" /> </conditions> <action type="AbortRequest" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
Nginx
在站点配置文件里面添加以下规则
allow 1.2.3.4; allow 4.5.6.1/24; deny all;
或者用
if ( $remote_addr !~* "1.2.3.4|4.5.6.") { return 444; } #如果$remote_addr获取的不正确,用$HTTP_X_FORWARDED_FOR替换试下
» 本文链接地址:https://blog.mydns.vip/4248.html
最新评论
学习一下
hhv