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 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:



支付宝微信扫一扫,打赏作者吧~
