前言
最近遇到一个小项目,有这样一个需求:需要把一些静态资源挂在web容器下提供给对方,毫无疑问,可以用nginx实现,但需要一定的鉴权(账号密码或token)不同的用户能访问的资源是不一样的,因为项目很小,项目金额也有限,肯定是考虑最小的成本实现,因此查找了一些nginx相关的资料。
教程
nginx安装
这里就不说了,百度一大堆,此处省略大约一万字…………
修改nginx.conf配置文件
主要是加以下两行
auth_basic "Please input password"; #提示输入用户名和密码的提示框
auth_basic_user_file /etc/nginx/conf.d/auth_pwd.auth; #密码文件
加在server /http /location 都可以,这个看每个人的需求
生成密码
- apache 带的 htpasswd(需要另外安装,具体可以搜索以下)
- openssl 自带工具(装有sshd的linux都自带了)
推荐
这里就介绍openssl密码生成方式,如下:
openssl passwd 密码明文
实操:
[root@localhost conf.d]# pwd
/etc/nginx/conf.d
[root@localhost conf.d]# openssl passwd Sec@123456
wrg8FUthRnwdQ
[root@localhost conf.d]# echo -n "test:wrg8FUthRnwdQ" > auth_pwd.auth
[root@localhost conf.d]#
注:这里的test:wrg8FUthRnwdQ是用户名:生成的密码密文
常见问题
- auth_basic_user_file 配置的路径不对,nginx不会有报错信息,这点比较难发现,配置的时候要特别留意
- Chrome 一次输错密码之后,不会重新弹出对话框了,测试的时候可以使用chrome 无痕窗口,这样每次都会弹出密码输入窗口
参考
1.Nginx 官方文档 - Nginx Documentation