Nginx上配置Basic Authorization登录认服务证的教程
关于BasicAuthorization
在HTTP中,BasicAuthorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。
在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是opensesame,则拼接后的结果就是Aladdin:opensesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串。
虽然对用户名和口令的Base64算法编码结果很难用肉眼识别解码,但它仍可以极为轻松地被计算机所解码,就像其容易编码一样。编码这一步骤的目的并不是安全与隐私,而是为将用户名和口令中的不兼容的字符转换为均与HTTP协议兼容的字符集。
优点:
- 使用非常简单,
- 开发和调试工作简单,
- 没有复杂的页面跳转逻辑和交互过程;
- 更利于发起方控制。
下面我们就来正式看一下如何在Nginx上配置一个BasicAuth认证的下载服务:
建用户和文件夹
新建用户shareuser:
建data文件夹,并
chown-Rshareuser:shareuser/path/to/data
列出指定目录下的文件:
需要的指令是autoindexon;,即可列出该目录下的所有文件并可以递归计入子目录。
还有两个辅助的指令
- autoindex_exact_sizeon|off;,即文件大小以字节数显示还是K/M/G显示
- autoindex_localtimeon|off;以localtimezone还是UTC显示文件的修改时间。
配置BasicAuth
两个指令
- auth_basic"Restricted";
- auth_basic_user_file./passwd;
auth_basic_user_file是一个存储用户名密码的文件。需要htpasswd命令来生成,
密码文件生成
首先需要安装
sudoapt-getinstallapache2-utils
命令
htpasswd-c/path/to/passwdusername
-c是新建一个文件,如果是append到已有文件,不用该选项。
根据提示输入密码即可。
ConfigSample
测试项目文件结构如下:
app conf nginx.conf passwd data
最终的结果如下:
usershareuser; server{ listen8011; rootdata; #indexindex.htmlindex.htm;#关闭index,否则会显示index.html而不是列出文件 location/{ autoindexon; autoindex_exact_sizeoff; autoindex_localtimeon; auth_basic"Restricted"; auth_basic_user_filepasswd; } } }
启动
nginx-p/path/to/app-cconf/nginx.conf
即可访问。