首页 > 解决方案 > 使用 API 网关和身份验证服务配置 nginx

问题描述

我目前正在我的 nginx 配置中实现一些逻辑,以便我可以处理身份验证和令牌验证。我的逻辑是:

第一种情况:

  1. 用户尝试访问 /login 或 /register 页面。
  2. Nginx 应该将这些调用直接重定向到 auth 服务。
  3. Auth 创建一个令牌并将其发送回用户。
  4. 结尾。

第二种情况:

  1. 用户尝试使用令牌访问 /someservice/somepage 页面。
  2. Nginx 应该将此调用重定向到 API 网关。
  3. API Gateway 验证用户是否正在尝试访问受保护的资源,如果是,则验证令牌并发回 2xx 响应。
  4. Nginx 得到 2xx 响应并将用户重定向到真正的/someservice
  5. Someservice 生成响应并将其发送回用户。
  6. 结尾。

首先,你觉得这个逻辑可以吗?我应该考虑其他选项身份验证选项吗?最重要的是,我如何使用 nginx 实现这个逻辑?

我的 nginx 配置如下所示:

http {
  upstream gateway {
    server ...;
  }
  upstream auth {
    server ...;
  }
  upstream someservice {
    server ...;
  }
  server {
    location ^~ /api {
      proxy_pass http://gateway;
      # redirect ???
    }
    location /auth {
      proxy_pass http://auth;
    }
    location /someservice {
      proxy_pass http://someservice;
    }
  }
}

谢谢!

标签: authenticationnginxnginx-locationapi-gatewaynginx-config

解决方案


所以最后我通过一些小的调整来保留我的原始配置,比如伟大的auth_requestnginx 指令,我按保护级别对功能进行分组,如果用户尝试访问安全资源,那么 nginx 将首先通过另一个服务验证请求。


推荐阅读