LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

nginx如何设置实现访客用户身份验证

admin
2025年6月29日 14:56 本文热度 29

NGINX 能够对客户端进行身份验证。使用 NGINX 对客户端请求进行身份验证可以减轻服务器的工作负载,并能够阻止未经身份验证的请求到达应用服务器。NGINX 开源版模块包括基本身份验证和身份验证子请求。NGINX Plus 专有的 JSON Web Tokens(JWT)验证模块可与使用身份验证标准 OpenID Connect 的第三方身份验证提供商集成

本例子演示都是NGINX开源版

HTTP 基本身份验证

NGINX可以理解如下的密码格式:

user1:passwd1:comment  #comment为可选的user2:passwd2user3:passwd3

使用openssl passwd 对字符串进行加密:

1、安装openssl后,在命令行执行如下命令:

openssl passwd 'Test121$'

2、在conf.d目录下创建passwd.txt,将用户名和密码写入,如图:

注:openssl passwd生成的密码是针对当前用户的,我在root下执行,因此用户就是root

3、编辑nginx.conf,给server模块添加认证,如图:

  • auth_basic:类似一个提示作用

  • auth_basic_user_file:指定密码文件位置


4、通过IP访问NGINX,提示输入账号密码,如图:

使用htpasswd来配置用户名和密码:

除了openssl passwd外,还可以使用htpasswd来设置用户名和密码

1、安装htpasswd,命令如下:

yum -y install apache2-utils    #centosapt install apache2-utils       #ubuntu

2、执行htpasswd命令生成用户名和密码文件,testuser是用户名,如图:

3、将/root/passwd.txt内容粘贴到conf.d/passwd.txt中,如图:

4、再次登录NGINX,提示输入用户名和密码,如图:

输入后即可登录到页面

注意:auth_basic认证可使用在http、server、location中,针对不同场景认证

身份验证内部子请求

通过第三方身份验证来对请求进行身份验证,需要用到的模块为http_auth_request_module,此模块默认不带,需要在编译安装的时候通过如下方式指定:

--with-http_auth_request_module   #with前面是两个横岗

1、在conf.d下定义auth.conf文件,内容如下:

  • auth_request:启用基于子请求结果的授权,设为off表示不启动,可配置在http、server、location中

  • auth_status:  保存认证请求的状态码,那就是/authservice的状态码

  • upstream_status:保存上游代理的返回状态码,也就是http://192.168.49.83:8989/auth返回的状态码

  • internal:只允许NGINX内部请求,不能通过外部请求

  • proxy_pass_request_body off:禁止将请求体传递给上游服务器

  • proxy_set_header Content-Length “”; 不将请求头内容传递给上游服务器

  • proxy_set_header X-Original-URI $request_uri; 自定义的 HTTP 头 X-Original-URI,其值为当前请求的 URI(由变量 $request_uri 表示)。$request_uri 变量包含了原始请求的 URI。通过设置这个头,你可以将原始请求的 URI 信息传递给上游服务器。这在调试或当后端服务需要知道原始请求路径时非常有用

原理:首先请求进来后,先到达子请求/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 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved