没有所谓的捷径
一切都是时间最平凡的累积

iis、nginx、apache利用rewrite重写方式设置只允许某些ip段访问

本文最后更新:2023年5月30日,已超过304天未更新,如果文章内容失效,请留言反馈本站。

前景:
我们在部署网站的时候,通常可能有需要屏蔽一些ip,或者一些内部系统只需要自己访问,所以我们需要根据需求设置一些访问规则,本文就是介绍通过rewrite方式来设置只允许某些ip或者ip段访问网站,当然如果是有服务器控制管理权限的可以直接在web端上设置,但如果是虚拟主机或者没有服务器权限,那么本文内容将可以起到作用。

如果只是设置屏蔽某些ip或ip段访问,可以参考:利用rewrite重写来禁止ip访问

其他相关文章:

nginx屏蔽域名访问,nginx屏蔽ip访问

nginx安全防护,根据UA屏蔽恶意请求

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的正则表达式

~ 区分大小写匹配

~* 不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

^ 匹配的开头

$ 匹配的结尾

. * ?等需要转义

» 站长码字辛苦,有用点个赞吧,也可以打个
» 若转载请保留本文转自:豫章小站 » 《iis、nginx、apache利用rewrite重写方式设置只允许某些ip段访问》
» 本文链接地址:https://blog.mydns.vip/4248.html
» 如果喜欢可以: 点此订阅本站 有需要帮助,可以联系小站
赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@mydns.vip。文章观点不代表本站立场。本站原创内容未经允许不得转载,或转载时需注明出处:豫章小站 » iis、nginx、apache利用rewrite重写方式设置只允许某些ip段访问
分享到: 更多 (0)

评论 抢沙发


  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

智慧源于勤奋,伟大出自平凡

没有所谓的捷径,一切都是时间最平凡的累积,今天所做的努力都是在为明天积蓄力量

联系我们赞助我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏