Nginx和Apache取消带验证目录的子目录验证的方法

转自: http://ihipop.info/2011/06/2473.html 

 

长期使用Nginx的后果就是,Apache都不会用了。
Nginx启用目录的HTTP验证非常简单:

auth_basic "DD-WRT-Wireless-Access";
auth_basic_user_file pass.txt;

甚至可以直接在Server配置节里面指定。
要关闭某个目录的验证 也很简单

location ~* /route\/? {
auth_basic off;
index index.html index.htm index.php;
}

Apache可以用Satisfy来实现(当然Nginx也支持satisfy)

Satisfy可以实现这样一个功能:当一个目录abc启用了密码保护,想单独开放它的一个子目录def,让这个子目录无须密码即可访问,或者对某些IP段落,比如192.168.2.0/24免密码访问,那么可以这样设置:

1AllowOverride All
2AuthName "Admin required"
3AuthType Basic
4AuthUserFile /path/to/pwd/file
5require valid-user
6 
7Allow from all
8Satisfy any

这样就可以取消子目录的验证了

 

原理摘自此处

同时使用AllowRequire时的访问策略。参数可以设置为 All 或 Any 。这个指令仅在某个特定区域的访问控制同时被用户名/密码客户端主机地址进行限定的时候起作用。默认行为(All)采取客户端首先通过地址访问限制并且输入有效的用户名和密码的方式。使用可选项 Any 将使客户端在通过主机限制或是输入一个有效的用户名和密码两种方式之一得到访问权限。这样,就可以通过密码来限制一个区域的访问,但允许某些特定地址的客户端访问时不需要输入密码。

比如,如果您想让您局域网内的用户访问您的web网站时不受限制,但局域网外的用户需提供密码才能进行访问,您可以采取类似如下的配置:

Require valid-user
Allow from 192.168.1
Satisfy Any


附上强制重新定向http到https的规则

Nginx:

#重定向所有http到https
if ( $scheme = 'http' ) {
rewrite ^(.*)$ https://$server_name$1 permanent;
}

$server_name换成$host是最好的啦

Apache:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

写成%{HTTPS} !on 也可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值