在搭建网站时,有时我们希望某些页面或整个站点仅限特定用户访问。这时,就可以使用 Nginx 的用户认证功能来实现简单的登录验证。本教程将详细讲解如何在 Nginx 虚拟主机中配置 HTTP 基本认证(Basic Authentication),即使是零基础的小白也能轻松上手。
什么是 Nginx 虚拟主机?
Nginx 虚拟主机(Virtual Host)是指在同一台服务器上运行多个网站的技术。每个网站可以拥有独立的域名、目录和配置。通过配置不同的 server 块,Nginx 能够根据请求的域名将流量分发到对应的网站目录。
为什么要添加用户认证?
用户认证常用于以下场景:
- 保护测试环境或后台管理页面
- 限制内部文档或资源的访问权限
- 临时对网站进行访问控制
通过 HTTP 基本认证,浏览器会在访问受保护页面时弹出登录框,只有输入正确的用户名和密码才能继续访问。
准备工作
确保你已经:
- 安装了 Nginx(可通过
nginx -v检查) - 拥有服务器的 root 或 sudo 权限
- 已配置好至少一个虚拟主机(即一个 server 块)
步骤一:安装 htpasswd 工具
htpasswd 是 Apache 提供的一个用于生成密码文件的工具,Nginx 也支持使用它创建的认证文件。
在 Ubuntu/Debian 系统中,运行:
sudo apt updatesudo apt install apache2-utils 在 CentOS/RHEL 系统中,运行:
sudo yum install httpd-tools 步骤二:创建用户密码文件
假设我们要为网站创建一个名为 admin 的用户,执行以下命令:
sudo htpasswd -c /etc/nginx/.htpasswd admin 系统会提示你输入并确认密码。生成的 .htpasswd 文件将保存在 /etc/nginx/ 目录下。
注意:
-c参数表示创建新文件。如果后续要添加其他用户(如 user2),请去掉-c,否则会覆盖原文件:sudo htpasswd /etc/nginx/.htpasswd user2
步骤三:配置 Nginx 虚拟主机
编辑你的虚拟主机配置文件(通常位于 /etc/nginx/sites-available/ 或直接在 /etc/nginx/nginx.conf 中)。
在需要保护的 location 块或整个 server 块中添加以下两行:
auth_basic "Restricted Access";auth_basic_user_file /etc/nginx/.htpasswd; 例如,完整配置可能如下:
server { listen 80; server_name example.com; root /var/www/example; location / { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; try_files $uri $uri/ =404; }} 这样,访问 example.com 的任何路径都会触发登录验证。
步骤四:测试并重载 Nginx
先检查配置语法是否正确:
sudo nginx -t 如果显示 “syntax is ok”,则重载 Nginx 使配置生效:
sudo systemctl reload nginx 常见问题与 SEO 关键词说明
在实际操作中,你可能会遇到权限问题或密码文件路径错误。确保 .htpasswd 文件对 Nginx 进程可读。
本文围绕 Nginx虚拟主机、用户认证、HTTP基本认证 和 Nginx配置教程 四个核心关键词展开,帮助你在搜索引擎中快速找到相关解决方案。
总结
通过以上几步,你已经成功为 Nginx 虚拟主机添加了用户认证功能。这种方法简单高效,适用于大多数需要基础访问控制的场景。虽然 HTTP 基本认证不够安全(建议配合 HTTPS 使用),但对于内部系统或临时保护来说非常实用。
快去试试吧!如有疑问,欢迎在评论区留言交流。

