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

amazon-web-services – Nginx proxy_pass到aws Api Gateway

我想配置Nginx反向代理服务器,它将把HTTP获得的所有请求重定向到我的AWS Api网关端点,即HTTPS(它是一个GET方法). (如果你想知道原因,原因是我有一个AWS Lambda函数,我希望第三方供应商通过Api Gateway调用,但他目前有一个与AWS的ssl_handshake的错误,可能是因为SNI.所以我会给他这个HTTP代理服务器).

我尝试过这样的事情:

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  MY_SERVER_NAME;
        root         /usr/share/Nginx/html;

        # Load configuration files for the default server block.
        include /etc/Nginx/default.d/*.conf;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass https://SOMETHING.execute-api.REGION.amazonaws.com/dev/RESOURCE/METHOD;               
                proxy_ssl_server_name on;
                proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                proxy_buffering off;
        }
}

但是当我尝试打电话时,我现在从CloudFront获得403

http://MY_SERVER_NAME

我觉得我在Nginx的SSL配置中遗漏了一些东西,但我不确定是什么.

解决方法:

您的问题是您将要发送到AWS API Gateway的HTTP Host标头设置为错误的值.

API网关需要将HTTP主机头设置为其自己的主机,例如到SOMETHING.execute-api.REGION.amazonaws.com

所以你应该:

proxy_set_header Host $proxy_host;

代替:

proxy_set_header Host $host;

实际上,您不必显式设置代理主机头,因为如果没有设置,Nginx会将其认为$proxy_host

Nginx docs on this

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

相关推荐