×

nginx账户认证

hqy hqy 发表于2025-01-14 21:54:31 浏览3 评论0

抢沙发发表评论

mportant;">一、Nginx 账户认证功能笔记

  1. ngx_http_auth_basic_module 模块介绍

    • Nginx 的账户认证功能主要通过 ngx_http_auth_basic_module 模块实现。该模块允许基于用户名和密码对特定的 URI 或目录进行访问限制,只有提供正确的凭据的用户才能访问受保护的资源。

  2. 配置指令

    • auth_basic:用于启用基本认证,并设置在客户端请求受保护资源时弹出的认证提示信息。例如:auth_basic "Restricted Area";,这里的 "Restricted Area" 就是提示用户输入用户名和密码的对话框标题。

    • auth_basic_user_file指定存储用户名和密码的文件路径。该文件的格式通常为 username:password,每行对应一个用户的认证信息,密码需要经过加密处理(一般使用 htpasswd 工具进行加密)。例如:auth_basic_user_file /etc/nginx/.htpasswd;

  3. 认证流程

    • 当客户端首次请求受保护的资源时,Nginx 会返回 401 Unauthorized 状态码,并在响应头中包含 WWW-Authenticate: Basic realm="Restricted Area""Restricted Area" 为 auth_basic 设置的提示信息),这会使得浏览器弹出一个对话框,要求用户输入用户名和密码。

    • 客户端将用户名和密码以 Base64 编码的形式发送回 Nginx(这种编码方式并不是加密,只是一种简单的转换)。

    • Nginx 接收到认证信息后,会根据 auth_basic_user_file 指定的文件中的用户信息进行验证。如果用户名和密码匹配,则允许客户端访问资源;否则,再次返回 401 Unauthorized 状态码,直到用户输入正确的凭据或者达到认证尝试次数上限(如果有设置的话)。

二、Nginx 账户认证功能实验

  1. 实验环境准备

    • 安装 Nginx:确保服务器上已经安装了 Nginx。如果没有安装,可以使用操作系统的包管理器进行安装(例如在 CentOS 上:yum install nginx -y)。

    • 安装 htpasswd 工具htpasswd 工具用于创建和管理存储用户名和密码的文件。在许多系统中,它通常是 httpd-tools 包的一部分,可以通过包管理器进行安装(如在 CentOS 上:yum install httpd-tools -y)。

  2. 创建密码文件

    • 使用 htpasswd 工具创建一个存储用户名和密码的文件。例如,创建一个名为 .htpasswd 的文件,并添加一个用户名为 testuser 的用户,密码为 testpass

htpasswd -c /etc/nginx/.htpasswd testuser
  • 按照提示输入密码 testpass-c 选项表示创建新文件,如果文件已存在则会覆盖它。如果要添加更多用户,不需要使用 -c 选项,例如:

htpasswd /etc/nginx/.htpasswd anotheruser
  1. 配置 Nginx 认证

    • 编辑 Nginx 配置文件(通常在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf 等路径下),在需要进行认证的 server 或 location 块中添加如下配置:

server {
    listen       80;
    server_name  example.com;
    location /protected/ {
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
        root   /usr/share/nginx/html;
        index  index.html;
    }
    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }
}
  • 上述配置对 /protected/ 目录下的资源启用了基本认证,设置认证提示信息为 "Restricted Area",并指定了密码文件的路径为 /etc/nginx/.htpasswd

  1. 测试认证功能

    • 保存 Nginx 配置文件后,使用 nginx -t 检查配置文件语法是否正确,然后使用 systemctl reload nginx(CentOS 系统)或相应的命令重新加载 Nginx 配置。

    • 在浏览器中访问 http://example.com/protected/假设 example.com 已解析到服务器的 IP 地址(/etc/hosts)),浏览器会弹出一个对话框,要求输入用户名和密码。输入之前创建的 testuser 和 testpass,如果用户名和密码正确,应该能够访问到 /protected/ 目录下的资源(假设该目录下存在 index.html 等文件);如果输入错误的用户名或密码,浏览器会再次弹出对话框,直到输入正确的凭据或者取消访问。

通过以上实验,你可以成功地在 Nginx 中配置账户认证功能,限制对特定资源的访问,提高网站的安全性。在实际应用中,可以根据需要保护的资源和用户群体,合理设置用户名、密码和认证范围,以满足不同的安全需求。


打赏

本文链接:https://www.kinber.cn/post/4642.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客