nginx如何设置实现访客用户身份验证
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
NGINX 能够对客户端进行身份验证。使用 NGINX 对客户端请求进行身份验证可以减轻服务器的工作负载,并能够阻止未经身份验证的请求到达应用服务器。NGINX 开源版模块包括基本身份验证和身份验证子请求。NGINX Plus 专有的 JSON Web Tokens(JWT)验证模块可与使用身份验证标准 OpenID Connect 的第三方身份验证提供商集成 本例子演示都是NGINX开源版 HTTP 基本身份验证 NGINX可以理解如下的密码格式:
使用openssl passwd 对字符串进行加密: 1、安装openssl后,在命令行执行如下命令:
2、在conf.d目录下创建passwd.txt,将用户名和密码写入,如图: 注:openssl passwd生成的密码是针对当前用户的,我在root下执行,因此用户就是root 3、编辑nginx.conf,给server模块添加认证,如图:
4、通过IP访问NGINX,提示输入账号密码,如图: 使用htpasswd来配置用户名和密码: 除了openssl passwd外,还可以使用htpasswd来设置用户名和密码 1、安装htpasswd,命令如下:
2、执行htpasswd命令生成用户名和密码文件,testuser是用户名,如图: 3、将/root/passwd.txt内容粘贴到conf.d/passwd.txt中,如图: 4、再次登录NGINX,提示输入用户名和密码,如图: 输入后即可登录到页面 注意:auth_basic认证可使用在http、server、location中,针对不同场景认证 身份验证内部子请求 通过第三方身份验证来对请求进行身份验证,需要用到的模块为http_auth_request_module,此模块默认不带,需要在编译安装的时候通过如下方式指定:
1、在conf.d下定义auth.conf文件,内容如下:
原理:首先请求进来后,先到达子请求/authservice,子请求的认证服务为http://192.168.49.83:8989/auth,如果子请求返回的状态码为2xx,表示请求成功,然后继续后面的root /usr/share/nginx/html,如果返回3xx或者4xx等,则表示请求不成功,认证不通过 2、编辑auth_8989.conf文件,定义路由返回状态码为200,内容如下: 3、通过IP访问,如图: 4、修改第2步,将返回状态码修改为401,再次请求,如图: 从上图看出,当子请求返回状态码不是2xx的时候,认证就会失败。 阅读原文:原文链接 该文章在 2025/7/1 23:18:25 编辑过 |
关键字查询
相关文章
正在查询... |