本文是针对在linux平台下用apache搭建互联网web服务器、同时没有专业的防火墙设备的用户。

在这种网络环境下可能会有这样的需求:大多数的数据你是希望通过web服务器分享给所有用户;但是对于一些特殊的数据(如公司远程共享内部资料),或者对于一些特殊的web监控(如mysql的phpmyadmin应用)你只想让特定IP地址的用户访问。

下面讲述用apahce的rewrite规则来实现限制其它IP允许特定IP地址访问特定虚拟主机服务,原理如下:

在web服务器上建立两个不同的apahce虚拟主机,一个对公共用户(所有的用户),一个只针对特殊的IP地址用户可以访问。假设sodone_manage是针对特定IP的可访问虚拟主机的根目录,虚拟主机对应的域名为 phpmyadmin.sodone.com。

我们还是用.htaccess的文件来实现rewrite。具体的.htaccess设置详见两种apache域名跳转法简单完成重定向中的“2.用.htaccess做域名跳转”。

我们只要在.htaccess文件中增加下面的内容就实现了功能:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^61.148.202.81 [NC]
RewriteCond %{HTTP_HOST} ^phpmyadmin.sodone.com [NC]
RewriteRule ^(.*) default [R=404]

上面的4行代码实现当61.148.202.81这个IP访问phpmyadmin.sodone.com时,才可以访问到sodone_manage目录下来的业务数据;或者可以把phpmyadmin等应用程序放到sodone_manage目录中,只有61.148.202.81这个IP才能通过phpmyadmin.sodone.com来管理WEB服务器。其它任何IP地址访问phpmyadmin.sodone.com都会出现404错误页面。

当然你也可以不用404错误页,可以用RewriteRule把其它访问重定制到一个其它网址。

作者: SoDone酥蛋
原文地址:http://www.sodone.com/allow-specific-ip-address-apahce-web-security/

转载请注明作者与原文地址信息。