Nginx微服务认证
在Nginx上构建微服务认证的最佳实践是什么 现在我有了下一个反向代理服务Nginx微服务认证,nginx,microservices,Nginx,Microservices,在Nginx上构建微服务认证的最佳实践是什么 现在我有了下一个反向代理服务 server { listen 80; listen [::]:80; server_name sspay.local; location /service/passport/ { proxy_pass http://passport-service:3000/; proxy_redirect off; proxy_set_header
server {
listen 80;
listen [::]:80;
server_name sspay.local;
location /service/passport/ {
proxy_pass http://passport-service:3000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
例如,我想创建“用户服务”,它将提供有关用户的信息。我希望它为普通用户提供当前用户的信息,为管理员提供所有用户的信息
对于此opportunity,passport服务提供包含用户权限信息的JWT令牌
那么我如何在nginx内部创建一个“中间件”,它将向“passport service”发出请求,以检查当前JWT令牌是否有权访问指定的路由(例如“/service/users/{id}”)使用nginx
然后在Nginx中设置指令,如下所示:
location /service/users/ {
auth_request /auth;
...
}
location = /auth {
internal;
proxy_pass http://passport-service:3000/;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header Authorization $http_authorization;
}
现在,只要客户机请求url以/service/users开头,Nginx就会向/auth发出内部子请求,在本例中,会在头中传递客户机IP和授权令牌,但是您可以根据需要对其进行配置
您的身份验证服务器脚本接收子请求,执行您需要执行的任何身份验证,如果您想允许访问,则将其编码为返回HTTP响应代码200,如果您不想,则返回401
这只是一个允许或拒绝访问的基本示例,您可以合并error\u页面
和/或auth\u request\u set
指令,以构建更全面的解决方案,将客户端重定向到登录页面、自定义错误页面、非管理员页面等等