偶然间知道 nginx 可以配置访问某些路径(比如 /files/xxx/secret)时需要密码验证, 这里做个记录怎么配置
一、生成密码文件
1.1 安装 htpasswd 工具
(Ubuntu/Debian)
sudo apt-get install apache2-utils
CentOS、RHEL 或类似的发行版上
sudo yum install httpd-tools
1.2 生成密码文件
htpasswd -c .pass user
.pass: 生成的密码文件的文件名user: 验证登录时输入的用户名- 执行该命令后会要求输入两次验证的密码
二、修改 nginx 配置
在 1.2 步生成了 .pass 的文件, 假设我们将其放在了 /etc/nginx/pass 目录下
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/certs/example.com/example.com_bundle.crt;
ssl_certificate_key /etc/nginx/certs/example.com/example.com.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /files/xxx/download/ {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/pass/.pass;
}
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}