apache和nginx proxy下的访问控制
apache为我们提供了比较完善的各种模块。而其在访问控制上也比较灵活,通过apahce ,我们可以很方便的对目录的访问做密码认证控制或IP访问策略控制。同时对于反应代理的页面的处理上,其也提供了其应的命令可以进行方便简介的处理。具体如下:
对于目录的访问控制:
1</VirtualHost>
2<VirtualHost *:80>
3 ServerAdmin [email protected]
4 ServerName test.361way.com
5 DocumentRoot "/var/www/html/test"
6 <Directory "/var/www/html/test">
7 Order deny,allow
8 Deny from all
9 Allow from XXX.XXX.XXX.XXX/29
10 </Directory>
11</VirtualHost>
如下面这一个虚拟主机的配置,我们只允许XXX.XXX.XXX.XXX/29 这个IP段的主机进行访问,其他所有的主机进行拒绝,当然,如果想进行访问密码限制,我们还可以通过authtype和authuserfile命令配置密码认证。(密码文件可通过htpasswd生成)
但对于某此反向代理的访问控制,如果再使用directory进行访问控制的话,显然在某些情况下并不适用(如:代理部分在另外一台主机上,这时候再通过目录指向,显然不行)。不过,apache的设计者们显然比我们提前想到了这个问题,其提供的mod_proxy模块里自带了对反向代理处理的命令,如下:
1ProxyPass /bamboo http://localhost:9090/bamboo
2ProxyPassReverse /bamboo http://localhost:9090/bamboo
3 <proxy http://localhost:9090/bamboo >
4 Order Deny,Allow
5 Deny from all
6 Allow from XXX.XXX.XXX.XXX/29
7 </proxy>
同样,对于某域名只允许指定的IP进行访问。
注:上面的要求,我们同样可以通过rewrite正则进行实现,不过即然apache为我们提供了这么方便而且强大的命令,干吗一定要麻烦的去利用正则表示呢?
提到apache,如果不对比下nginx,似乎就有点说不过去。毕竟现在其已是apahce最强劲的对手。nginx在访问控制上的处理同样不容小觑。
1、密码访问设置:
1location ~ ^/(tongji)/ {
2 root /data/www/wwwroot/count;
3 auth_basic "361WAY-COUNT-TongJi";
4 auth_basic_user_file /usr/local/nginx/conf/htpasswd/tongji;
5}
不过,密码文件的生成要用到apache的htpasswd工具。
2、文件类型控制:
1location ~* .(txt|doc)$ {
2 if (-f $request_filename) {
3 root /data/www/wwwroot/361way.com/test;
4 #rewrite …..可以重定向到某个URL
5 break;
6 }
7}
当然,可以简化为下面的语句
1location ~* .(txt|doc)${
2 root /data/www/wwwroot/361way.com/test;
3 deny all;
4}
同样对目录的访问控制也不错:
1location ~ ^/(WEB-INF)/ {
2 deny all;
3}
3、对IP访问的控制,需要用到ngx_http_access_module
1location / {
2 deny 192.168.1.1;
3 allow 192.168.1.0/24;
4 allow 10.1.1.0/16;
5 deny all;
6}
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/http-proxy-access-control/1790.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.