apache配置黑名单和白名单

因为项目需要,部署之后客户需要实现白名单功能。以前一般使用iis服务器或者是网上的DZ或CP面板,而且也仅仅操作过黑名单。百度搜索,基本都是黑名单的操作方法,本文章主要是讲使用apache来规则实现黑白名单,从程序角度实现的就不在陈述,PHP程序可以直接获取客户端IP在初始化class或者login方法实现禁止或仅允许区段IP通过访问。

方法1:通过apache的虚拟主机配置文件httpd.conf来控制,本方法适用于自己架设的服务器,一般虚拟主机是不能接触到httpd.conf文件的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#白名单,仅允许192.168.0.1以及192.168.1.1-192.168.1.255访问
<Directory "D:/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    #以下为关键代码
    Order Deny,Allow
    Allow from 192.168.0.1
    Allow from 192.168.1.0/24
    Deny from All
</Directory>
 
#黑名单,禁止192.168.0.1以及192.168.1.1-192.168.1.255访问
<Directory "D:/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    #以下为关键代码
    order allow,deny 
    allow from all 
    deny from 192.168.0.1
    deny from 192.168.1.
</Directory>

方法2:通过apache的虚拟主机的伪静态文件.htaccess来控制,本方法适用于支持.htaccess的所有主机。

1
2
3
4
5
6
7
8
9
10
#白名单,仅允许192.168.0.1以及192.168.1.1-192.168.1.255访问
Order Deny,Allow
Allow from 192.168.0.1
Allow from 192.168.1.0/24
Deny from All
#黑名单,禁止192.168.0.1以及192.168.1.1-192.168.1.255访问
order allow,deny 
allow from all 
deny from 192.168.0.1
deny from 192.168.1.

PS:192.168.1.0/24与192.168.1. 等价,仅为不同书写格式。