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
标签:nginx,proxy,amazon-web-services,ssl,aws-api-gateway 来源: https://codeday.me/bug/20190523/1155163.html