插件窝 干货文章 Nginx怎么用htpasswd对网站进行密码保护

Nginx怎么用htpasswd对网站进行密码保护

htpasswd Nginx 使用 密码 434    来源:    2025-04-24

使用Nginx和htpasswd对网站进行密码保护

要在Nginx中使用htpasswd对网站进行密码保护,可以按照以下步骤操作:

1. 安装htpasswd工具

htpasswd通常随Apache工具包一起提供。在大多数Linux发行版中,可以通过以下命令安装:

# Debian/Ubuntu
sudo apt-get install apache2-utils

# CentOS/RHEL
sudo yum install httpd-tools

2. 创建密码文件

sudo htpasswd -c /etc/nginx/.htpasswd username

系统会提示你输入并确认密码。

  • -c 参数表示创建新文件(如果文件已存在会覆盖)
  • 后续添加用户时不要使用-c参数: bash sudo htpasswd /etc/nginx/.htpasswd anotheruser

3. 配置Nginx

编辑Nginx配置文件(通常在/etc/nginx/sites-available/your_site/etc/nginx/nginx.conf):

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;

        # 其他配置...
    }
}

4. 测试并重载Nginx配置

sudo nginx -t  # 测试配置是否正确
sudo systemctl reload nginx  # 重载配置

高级选项

对特定路径进行保护

location /protected/ {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

排除某些路径

location /public/ {
    auth_basic off;
}

使用不同的认证方式

htpasswd支持多种密码加密方式: - -B 使用bcrypt(最安全但CPU消耗较大) - -d 使用crypt() - -s 使用SHA1 - -p 使用明文密码(不推荐)

例如使用bcrypt:

sudo htpasswd -B -c /etc/nginx/.htpasswd username

注意事项

  1. 确保密码文件(.htpasswd)存储在Web根目录之外
  2. 定期更改密码以提高安全性
  3. 考虑设置文件权限: bash sudo chown root:www-data /etc/nginx/.htpasswd sudo chmod 640 /etc/nginx/.htpasswd
  4. 对于生产环境,建议结合HTTPS使用,以防止密码在传输中被截获

这样配置后,访问你的网站时就会弹出登录对话框,只有输入正确用户名和密码的用户才能访问受保护的内容。