配置nginx身份认证.note

noteId: WEB959e62a158509be027b27c1360e02bbe · 原始路径:/ALL/Linux - A模块/服务配置/Nginx、Nginx反向代理 - 80端口TCP/配置nginx身份认证.note · 图片:7 · 附件待处理:0

 
一、配置 Basic 身份认证认证:
只有使用 htpasswd 手动添加的用户才能够通过身份认证
 
# 参考链接:
https://cloud.tencent.com/developer/article/1540712#:~:text=%E4%BD%BF%E7%94%A8%20auth_basic%20%E6%8C%87%E4%BB%A4%EF%BC%8C%E5%90%AF%E7%94%A8%20HTTP%E5%9F%BA%E6%9C%AC%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E3%80%82%20%E4%BD%BF%E7%94%A8%20auth_basic_user_file%20%E6%8C%87%E4%BB%A4%2C%20%E6%8C%87%E5%AE%9A%E5%B8%90%E5%AF%86%E6%96%87%E4%BB%B6%E4%BD%8D%E7%BD%AE%E3%80%82,%E5%91%BD%E4%BB%A4%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20openssl%20%E5%91%BD%E4%BB%A4%E4%BB%A3%E6%9B%BF%E3%80%82%20HTTP%E5%9F%BA%E6%9C%AC%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%EF%BC%8C%E4%BD%BF%E7%94%A8%20base64%20%E7%AE%97%E6%B3%95%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A0%81%EF%BC%8C%E5%B9%B6%E4%BB%A5%E6%98%8E%E6%96%87%E7%9A%84%E5%BD%A2%E5%BC%8F%E5%9C%A8%E7%BD%91%E7%BB%9C%E4%B8%AD%E8%BF%9B%E8%A1%8C%E4%BC%A0%E8%BE%93%EF%BC%8C%E5%BB%BA%E8%AE%AE%E9%85%8D%E5%90%88%20HTTPS%20%E5%8D%8F%E8%AE%AE%E4%BD%BF%E7%94%A8%E3%80%82
 
1、安装 工具包:
因为这里需要使用到 htpasswd,而htpasswd 命令又是属于 apache2 的工具,因此需要下载 apache2-utils
apt install -y apache2-utils
 
 
2、使用 htpasswd 生成用户密码:
htpasswd添加的用户不需要本地存在
htpasswd -c /etc/nginx/.htpasswd user1
htpasswd /etc/nginx/.htpasswd user2
 
 
3、配置 nginx:
vim /etc/nginx/sites-enabled/default
systemctl restart nginx
 
4、客户端测试:
登陆成功:
 
 
 
 
二、配置 PAM 身份认证:
与 htpasswd 不同,PAM能够直接使用存在的本地用户来进行身份认证,而无需手动指定
 
# 参考链接:
https://techexpert.tips/zh-hans/nginx-zh-hans/nginx-pam-%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81/
 
1、安装 pam:
apt install -y libnginx-mod-http-auth-pam
 
2、配置 nginx:
vim /etc/nginx/sites-enabled/default
 
 
 
3、配置 PAM,添加nginx:
# 测试了一下,不配置 PAM文件也可以
vim /etc/pam.d/nginx    //新文件,直接创建
可以在 /etc/pam.d/目录下的文件中照抄
 
 
5、给予 nginx 读取 /etc/shadow 文件的权限:
shadow文件储存着用户的密码,nginx需要读取它来完成身份认证
/etc/shadow 的属组是 shadow,它有读取的权限,只需要将 nginx的进程用户(www-data)加入进 shadow组中即可:
usermod -aG shadow www-data    //将www-data加入shadow组中
 
 
chmod 744 /etc/shadow    //可以这样配置,给予所有人读取的权限,但是不建议,因为这样的话,所有用户都有读取密码的权限,这是不安全的
systemctl restart nginx
 
6、客户端访问:
 
 
三、使用 LDAP作为后端进行认证:
其实就是配置 libpam-ldapd 加上上面的 pam 配置就可以了