前景:
我们在部署网站的时候,通常可能有需要屏蔽一些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} !^(1.2.3.4|4.5.6\.) [OR]
RewriteCond %{REMOTE_ADDR} !^(1.2.3.4|4.5.6\.) [OR]
RewriteCond %{http:X-Real-IP} !^(1.2.3.4|4.5.6\.)
RewriteRule (.*) - [F]
</IfModule>
windows2003 iis6
windows2003需要在iis6的isapi筛选器上加载rewrite.dll,在规则文件里面添加以下规则。
RewriteEngine On
#Block ip
RewriteCond %{http:X-Forwarded-For} !^(1.2.3.4|4.5.6\.) [OR]
RewriteCond %{REMOTE_ADDR} !^(1.2.3.4|4.5.6\.) [OR]
RewriteCond %{http:X-Real-IP} !^(1.2.3.4|4.5.6\.)
RewriteRule (.*) - [F]
windows2008 iis7
规则文件web.config (手工创建web.config文件到站点根目录)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="import">
<match url="(.*)" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<!--#Block ip-->
<add input="{HTTP_X_FORWARDED_FOR}" pattern="^(1.2.3.4|4.5.6\.)" ignoreCase="false" negate="true" />
<add input="{REMOTE_ADDR}" pattern="^(1.2.3.4|4.5.6\.)" ignoreCase="false" negate="true" />
<add input="{HTTP_X_REAL_IP}" pattern="^(1.2.3.4|4.5.6\.)" ignoreCase="false" 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 !~* "^(11.22.33.44|4.5.6\.)") { return 444; } #如果$remote_addr获取的不正确,用$HTTP_X_FORWARDED_FOR替换试下
补充关于nginx的正则表达式
~ 区分大小写匹配
~* 不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
^ 匹配的开头
$ 匹配的结尾
. * ?等需要转义
» 本文链接地址:https://blog.mydns.vip/4248.html
最新评论
麻烦发下检测工具
让我下载
非常好