Nginx 的账户认证功能主要通过
ngx_http_auth_basic_module
模块实现。该模块允许基于用户名和密码对特定的 URI 或目录进行访问限制,只有提供正确的凭据的用户才能访问受保护的资源。auth_basic
:用于启用基本认证,并设置在客户端请求受保护资源时弹出的认证提示信息。例如:auth_basic "Restricted Area";
,这里的"Restricted Area"
就是提示用户输入用户名和密码的对话框标题。auth_basic_user_file
:指定存储用户名和密码的文件路径。该文件的格式通常为username:password
,每行对应一个用户的认证信息,密码需要经过加密处理(一般使用htpasswd
工具进行加密)。例如:auth_basic_user_file /etc/nginx/.htpasswd;
当客户端首次请求受保护的资源时,Nginx 会返回
401 Unauthorized
状态码,并在响应头中包含WWW-Authenticate: Basic realm="Restricted Area"
("Restricted Area"
为auth_basic
设置的提示信息),这会使得浏览器弹出一个对话框,要求用户输入用户名和密码。客户端将用户名和密码以 Base64 编码的形式发送回 Nginx(这种编码方式并不是加密,只是一种简单的转换)。
Nginx 接收到认证信息后,会根据
auth_basic_user_file
指定的文件中的用户信息进行验证。如果用户名和密码匹配,则允许客户端访问资源;否则,再次返回401 Unauthorized
状态码,直到用户输入正确的凭据或者达到认证尝试次数上限(如果有设置的话)。
安装 Nginx:确保服务器上已经安装了 Nginx。如果没有安装,可以使用操作系统的包管理器进行安装(例如在 CentOS 上:
yum install nginx -y
)。安装
htpasswd
工具:htpasswd
工具用于创建和管理存储用户名和密码的文件。在许多系统中,它通常是httpd-tools
包的一部分,可以通过包管理器进行安装(如在 CentOS 上:yum install httpd-tools -y
)。使用
htpasswd
工具创建一个存储用户名和密码的文件。例如,创建一个名为.htpasswd
的文件,并添加一个用户名为testuser
的用户,密码为testpass
:
按照提示输入密码
testpass
,-c
选项表示创建新文件,如果文件已存在则会覆盖它。如果要添加更多用户,不需要使用-c
选项,例如:
配置 Nginx 认证
编辑 Nginx 配置文件(通常在
/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
等路径下),在需要进行认证的server
或location
块中添加如下配置:
上述配置对
/protected/
目录下的资源启用了基本认证,设置认证提示信息为"Restricted Area"
,并指定了密码文件的路径为/etc/nginx/.htpasswd
。
测试认证功能
保存 Nginx 配置文件后,使用
nginx -t
检查配置文件语法是否正确,然后使用systemctl reload nginx
(CentOS 系统)或相应的命令重新加载 Nginx 配置。在浏览器中访问
http://example.com/protected/
(假设example.com
已解析到服务器的 IP 地址(/etc/hosts)),浏览器会弹出一个对话框,要求输入用户名和密码。输入之前创建的testuser
和testpass
,如果用户名和密码正确,应该能够访问到/protected/
目录下的资源(假设该目录下存在index.html
等文件);如果输入错误的用户名或密码,浏览器会再次弹出对话框,直到输入正确的凭据或者取消访问。
本文链接:https://www.kinber.cn/post/4642.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: