Skip to content

Nginx 访问控制 (Basic Auth) 设置备忘

本文档记录了如何通过 Nginx 为 VitePress 的特定路径(如 /Personal)设置访问权限控制。

1. 生成加密密码文件

使用 htpasswd 工具生成密码文件。用户指定的路径为 /etc/nginx/.htpasswd_wayne

bash
# 如果未安装工具,先安装
sudo apt update
sudo apt install apache2-utils

# 创建密码文件并添加用户(例如用户名为 wayne)
# -c 参数表示创建新文件,如果文件已存在且想追加用户,请去掉 -c
sudo htpasswd -c /etc/nginx/.htpasswd_wayne wayne

2. Nginx 配置文件修改

在 Nginx 的 server 配置块中,添加针对特定路径的 location 块。

nginx
server {
    # ... 其他配置 (listen, server_name, root等) ...

    # 保护 /Personal 路径
    location /Personal {
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd_wayne;
        
        # 兼容 VitePress 的 cleanUrls 路由规则
        try_files $uri $uri.html $uri/ =404;
    }

    # 默认路径配置(建议也支持 cleanUrls)
    location / {
        try_files $uri $uri.html $uri/ =404;
    }
}

3. 生效配置

修改完成后,务必检查语法并重载 Nginx。

bash
# 检查语法
sudo nginx -t

# 重载服务
sudo systemctl reload nginx

4. 注意事项

  • 安全性:HTTP Basic Auth 在非 HTTPS 环境下是不安全的(明文传输)。强烈建议配合 SSL 证书使用。
  • 追加用户:如果需要给多个人权限,使用 sudo htpasswd /etc/nginx/.htpasswd_wayne username(不带 -c)。
  • 文件权限:确保 Nginx 运行用户(通常是 www-data)对 .htpasswd_wayne 文件有读取权限。

Credit @Wayne19980