nginx 子请求接收响应_Nginx之Http模块系列之authrequest模块

7e383cecd34793e8e15f1f04f8ee223c.gif

aaf7bf70f63cceabd9cc23455e01413a.gif

个人博客:https://www.aiopsclub.com/

auth_request模块主要作用是通过子请求的响应状态码来实现客户端授权。

1. 简介

ngx_http_auth_request_module模块(1.5.4+)根据子请求的响应结果实现客户端授权。如果子请求返回2xx响应代码,则允许访问。如果返回401或403,则使用相应的错误代码拒绝访问。子请求返回的任何其他响应代码都被视为错误。
对于401错误,客户端还从子请求响应中接收“WWW-Authenticate”标头。
默认情况下未构建此模块,应使用--with-http_auth_request_module配置参数启用它。

2.实例

我们看一个实例,具体分析一下:

location /private/ {
    auth_request /auth;
    ...
}

location = /auth {
    proxy_pass ...
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

以上的示例配置表示nginx将会客户端请求/private时,通过auth_request指令来进行客户端授权,即通过对/auth的访问的响应结果,来决定/private/是否允许继续访问。

3.配置格式

Syntax:  auth_request uri | off;
Default:  auth_request off;
Context:  http, server, location

根据子请求的结果启用授权,并设置将子请求发送到的URI。

Syntax:  auth_request_set $variable value;
Default:  —
Context:  http, server, location

授权请求完成后,将variable置为value。该值可能包含授权请求中的变量,例如$upstream_http_*

4.总结

ngx_http_auth_request_module可以帮助我们实现对资源的统一权限验证,这在微服务中非常有用,我们可以实现自己的权限认证服务,将所有的资源的请求都通过权限认证服务后再进行处理,提高了系统的安全性。但同时会增加请求的响应时间,因为此时每次请求都会发起两次http调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Nginx中添加http_auth_request_module模块,你可以按照以下步骤操作: 1. 确认你的Nginx版本是否支持http_auth_request_module模块。你可以使用以下命令来检查: ``` nginx -V ``` 在输出结果中查找是否包含 "--with-http_auth_request_module" 字样,如果有,说明该模块已经被支持。 2. 如果你的Nginx版本不支持该模块,你需要重新编译Nginx并启用该模块。首先,下载Nginx的源代码: ``` wget http://nginx.org/download/nginx-x.x.x.tar.gz ``` (将 "x.x.x" 替换为你想要下载的版本号) 3. 解压源代码包: ``` tar -zxvf nginx-x.x.x.tar.gz ``` 4. 进入解压后的目录: ``` cd nginx-x.x.x ``` 5. 执行以下命令进行配置,确保启用了http_auth_request_module模块: ``` ./configure --with-http_auth_request_module ``` 6. 执行以下命令编译并安装Nginx: ``` make sudo make install ``` 7. 配置Nginx的配置文件(通常是位于 /etc/nginx/nginx.conf)。在合适的位置添加以下配置项: ``` location / { auth_request /auth; ... } location = /auth { internal; proxy_pass http://auth_backend; ... } ``` 这里的 "/auth" 是用来处理认证请求的URL,你可以根据需要进行修改。"http://auth_backend" 是实际处理认证请求的后端服务地址,也需要根据实际情况进行修改。 8. 保存并关闭配置文件后,重启Nginx服务: ``` sudo service nginx restart ``` 现在,你已经成功地添加了http_auth_request_module模块Nginx中。你可以根据实际需求进一步配置和使用该模块来进行认证授权操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值