微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 AWS 签名的 NGINX 反向代理配置

如何解决带有 AWS 签名的 NGINX 反向代理配置

我使用 Nginx 作为网关的反向代理。它正在使用普通的api。但是,它不适用于 AWS 签名。说签名不匹配。我加了代理主机,还是不行。请帮忙。 验证 Nginx 日志,所有标头都被传递。计算签名的问题。通过邮递员和使用 AWSSign sdk 的工作代码进行了尝试

location / {                                
                proxy_pass_request_headers on;
                proxy_pass_request_body on;                     
                proxy_pass_header x-api-key;
                proxy_pass_header Authorization;
                proxy_pass_header x-amz-content-sha256;
                proxy_pass_header x-amz-date;
                #proxy_pass_header Host;
                proxy_set_header Host $proxy_host;
                proxy_pass https://<gatewayid>.execute-api.<region-name>.amazonaws.com/<stage>/;
                proxy_http_version  1.1;                        
            }

观察Nginx的日志,可以看到签名值和sha256值与邮递员看到的完全不同。

解决方法

只是一个小小的改变。它期待从阶段开始到 api 路径结束的路径。因此,我从 proxy_pass 中删除了舞台名称并将其添加到实际 url 中,因此签名计算正确。使用 (gatewayid).execute-api.(region-name).amazonaws.com

在邮递员中显式覆盖主机
location / {                                
                proxy_pass_request_headers on;
                proxy_pass_request_body on;                                     
                proxy_set_header Host $proxy_host;
                proxy_pass https://(gatewayid).execute-api.(region-name).amazonaws.com/;
                proxy_http_version  1.1;                        
            }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。