apache proxy下的访问控制

2012年10月8日 发表评论 阅读评论

apache为我们提供了比较完善的各种模块。而其在访问控制上也比较灵活,通过apahce ,我们可以很方便的对目录的访问做密码认证控制或IP访问策略控制。同时对于反应代理的页面的处理上,其也提供了其应的命令可以进行方便简介的处理。具体如下:

对于目录的访问控制:

</VirtualHost>
<VirtualHost *:80>
    ServerAdmin test@361way.com
    ServerName test.361way.com
    DocumentRoot "/var/www/html/test"
    <Directory "/var/www/html/test">
        Order deny,allow
        Deny from all
        Allow from XXX.XXX.XXX.XXX/29
    </Directory>
</VirtualHost>

如下面这一个虚拟主机的配置,我们只允许XXX.XXX.XXX.XXX/29这个IP段的主机进行访问,其他所有的主机进行拒绝,当然,如果想进行访问密码限制,我们还可以通过authtype和authuserfile命令配置密码认证。(密码文件可通过htpasswd生成)

但对于某此反向代理的访问控制,如果再使用directory进行访问控制的话,显然在某些情况下并不适用(如:代理部分在另外一台主机上,这时候再通过目录指向,显然不行)。不过,apache的设计者们显然比我们提前想到了这个问题,其提供的mod_proxy模块里自带了对反向代理处理的命令,如下:

    ProxyPass   /bamboo http://localhost:9090/bamboo
    ProxyPassReverse    /bamboo http://localhost:9090/bamboo
 <proxy  http://localhost:9090/bamboo >
            Order Deny,Allow
            Deny from all
            Allow from XXX.XXX.XXX.XXX/29
    </proxy>

同样,对于某域名只允许指定的IP进行访问。

注:上面的要求,我们同样可以通过rewrite正则进行实现,不过即然apache为我们提供了这么方便而且强大的命令,干吗一定要麻烦的去利用正则表示呢?

 

提到apache,如果不对比下nginx,似乎就有点说不过去。毕竟现在其已是apahce最强劲的对手。nginx在访问控制上的处理同样不容小觑。

1、密码访问设置:

location ~ ^/(tongji)/ {
    root /data/www/wwwroot/count;
    auth_basic "361WAY-COUNT-TongJi";
    auth_basic_user_file /usr/local/nginx/conf/htpasswd/tongji;
}

不过,密码文件的生成要用到apache的htpasswd工具。

2、文件类型控制:

location ~* .(txt|doc)$ {
    if (-f $request_filename) {
        root /data/www/wwwroot/361way.com/test;
        #rewrite …..可以重定向到某个URL
        break;
    }
}

当然,可以简化为下面的语句

location ~* .(txt|doc)${
    root /data/www/wwwroot/361way.com/test;
    deny all;
}

同样对目录的访问控制也不错:

location ~ ^/(WEB-INF)/ {
    deny all;
}

3、对IP访问的控制,需要用到ngx_http_access_module

location / {
    deny 192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    deny all;
}

 




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.