在搭建网站或管理内部系统时,你可能希望某些页面只允许特定用户访问。这时候,Nginx 身份验证就派上用场了!本文将从零开始,教你如何使用 Nginx 的 HTTP 基本认证功能,为你的网站添加一层简单的安全保护。即使你是完全的新手,也能轻松跟着操作。
什么是 Nginx 身份验证?
Nginx 支持一种叫做 HTTP Basic Authentication(HTTP 基本认证) 的机制。当你访问受保护的页面时,浏览器会弹出一个登录框,要求输入用户名和密码。只有验证通过后,才能查看页面内容。
准备工作
你需要:
- 一台已安装 Nginx 的服务器(Linux 系统如 Ubuntu/CentOS)
- 对服务器有 root 或 sudo 权限
- 一个你想保护的网站目录或路径
第一步:安装 httpd-tools(用于生成密码文件)
在大多数 Linux 发行版中,我们需要使用 htpasswd 工具来创建用户和密码文件。这个工具通常包含在 apache2-utils(Debian/Ubuntu)或 httpd-tools(CentOS/RHEL)包中。
Ubuntu/Debian 用户:
sudo apt updatesudo apt install apache2-utils CentOS/RHEL 用户:
sudo yum install httpd-tools 第二步:创建密码文件
运行以下命令创建第一个用户(例如 admin):
sudo htpasswd -c /etc/nginx/.htpasswd admin 系统会提示你输入并确认密码。这个命令会在 /etc/nginx/ 目录下生成一个名为 .htpasswd 的隐藏文件,里面保存了加密后的用户名和密码。
如果要添加更多用户,去掉 -c 参数即可:
sudo htpasswd /etc/nginx/.htpasswd user2 第三步:修改 Nginx 配置文件
打开你要保护的站点的 Nginx 配置文件。通常位于 /etc/nginx/sites-available/ 或直接在 /etc/nginx/nginx.conf 中。
假设你要保护整个网站,找到 server 块,在其中添加以下两行:
auth_basic "Restricted Access";auth_basic_user_file /etc/nginx/.htpasswd; 完整示例:
server { listen 80; server_name example.com; root /var/www/html; location / { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; }} 如果你想只保护某个子目录(比如 /admin),可以这样写:
location /admin { auth_basic "Admin Area"; auth_basic_user_file /etc/nginx/.htpasswd;} 第四步:测试并重载 Nginx
先检查配置文件语法是否正确:
sudo nginx -t 如果没有报错,重载 Nginx 使配置生效:
sudo systemctl reload nginx 第五步:访问测试
现在打开浏览器,访问你设置保护的页面。你应该会看到一个弹窗,要求输入用户名和密码。输入之前创建的 admin 和对应密码,就能成功进入页面了!
安全提示
虽然 HTTP 基本认证简单易用,但它默认以 Base64 编码传输凭证(不是加密!)。因此,强烈建议配合 HTTPS 使用,否则用户名和密码可能被中间人截获。这也是提升 Web服务器安全 的重要一步。
总结
通过以上步骤,你已经成功为 Nginx 网站添加了基本的身份验证功能。这项技术非常适合用于保护后台管理界面、内部文档或测试环境。记住,合理使用 Nginx配置教程 中的方法,能有效提升你的网站安全性。
如果你觉得这篇 Nginx身份验证 教程对你有帮助,欢迎收藏或分享给其他开发者!
