nginx - nginx 代理请求使用来自身份验证 http 请求的标头值进行服务
问题描述
这就是我想要实现的目标:
我想使用 nginx 作为经典的反向代理来公开服务器的资源。在调用服务器之前,nginx 应该向令牌颁发者(内部服务)询问令牌,并将此令牌注入到服务器调用的身份验证标头中。
使用 nginx 可以实现这一点吗?我查看了 nginx 文档,我知道我可以使用它proxy_set_header
来修改代理到服务器的标头。
更新
我能够使以下解决方案起作用; 这是github上的POC
解决方案
如果您可以让您的令牌颁发者通过一些 HTTP 标头返回令牌,例如X-JWT-Token
,下面是一个适合您的示例:
location /auth {
internal;
proxy_pass http://token-issuer;
proxy_pass_request_body off;
proxy_set_header Content-Length 0;
# You can pass an additional data for the token issuer, for example
# proxy_set_header X-Original-URI $request_uri;
}
location / {
auth_request /auth;
auth_request_set $token $upstream_http_x_jwt_token;
proxy_set_header Authorization "Bearer $token";
proxy_pass http://upstream;
}
推荐阅读
- homebrew - brew services list 显示错误未定义方法“chomp”
- java - 通过 1 个值获取 2 个键 java hashmap
- python - Python:从给定的数组/列表创建树结构
- python - 如何获得熊猫组中的行之间的差异?
- google-apps-script - 即使是最简单的 Google Apps 脚本,“此应用程序也已被阻止”
- r - 如何从线性模型的模拟中找到置信区间
- javascript - 如何自动刷新 Instagram 基本显示 API 令牌?
- reactjs - 这是使用来自反应路由器的链接在组件之间发送数据的有效方法吗?
- javascript - 在strapi后端创建数据后需要在Vercel上重新部署
- azure - APIM 无法连接到 AKS 中部署的服务