本文是针对在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把其它访问重定制到一个其它网址。
已测试,完美成功!支持一下
努力
最好配合iptables来限制服务器端口。
其实针对windows服务器应该也是一样的配合吧?