Amazon web services API网关VPC链接集成到NLB 404

Amazon web services API网关VPC链接集成到NLB 404,amazon-web-services,proxy,aws-api-gateway,aws-load-balancer,nlb,Amazon Web Services,Proxy,Aws Api Gateway,Aws Load Balancer,Nlb,我有一个这样配置的代理+资源 NLB是内部的,所以使用VPC链接,但是当我点击API网关阶段url时,我得到了404。下面是日志 (some-request-id) Sending request to http://masked.elb.us-east-1.amazonaws.com/microservice/v2/api-docs Received response. Status: 404, Integration latency: 44 ms 但是,当我从浏览器中的日志复制粘贴相同

我有一个这样配置的代理+资源

NLB是内部的,所以使用VPC链接,但是当我点击API网关阶段url时,我得到了404。下面是日志

(some-request-id) Sending request to http://masked.elb.us-east-1.amazonaws.com/microservice/v2/api-docs

Received response. Status: 404, Integration latency: 44 ms
但是,当我从浏览器中的日志复制粘贴相同的NLB URL时,我得到的是带有HTTP 200的json响应


我在这里遗漏了什么?

这个404是从负载平衡器上的应用程序返回的,因此它肯定正在连接

我可以从您的请求中看到您指定的主机名是ELB名称,应用程序是否正在侦听此主机名?如果某些web服务器服务(如Apache或Nginx)与另一个vhost中的vhost不匹配,则它们将命中第一个vhost,而另一个vhost可能不会命中您的应用程序

您在API网关中指定的域名应该是它将在主机上连接的域名,VPC链接存储此链接用于哪个负载平衡器的信息。因此,如果您的API有一个VHOST for
https://api.example.com
您可以指定
https://api.example.com/{proxy}


从您的主机上,您应该能够在访问日志(和错误日志)中看到它试图从哪个主机/路径加载。

结果是,我指向了错误的VPC链接。一旦我指向正确的VPC链接,它就开始工作了

这里的关键是,即使API网关日志告诉我,它正在命中,但实际上并没有命中这个URL。相反,它会点击连接VPC链接的NLB

我通过将端点URL中的域名更改为,

在日志中我看到了这个

Thu Jul 30 09:28:09 UTC 2020 : Sending request to http://domainwhichdoesnotexist.com/microservice/api/api-docs
Thu Jul 30 09:28:09 UTC 2020 : Received response. Status: 200, Integration latency: 72 ms

是的,应用程序正在ELB上侦听,我可以通过VPN直接访问ELB,我可以成功访问它。如果您访问其中一台主机,您在测试时是否能够在访问日志中看到请求?很遗憾,我们没有启用访问日志,并且应用程序正在fargate中运行。。因此,在接下来的几个小时内,我看不到有机会在应用程序中启用访问日志。没有它,可能很难调试,因此要确认您是否访问
http://masked.elb.us-east-1.amazonaws.com/microservice/v2/api-docs
当连接到VPN时,它可以工作,但当API网关访问这个确切的端点时(包括相同的域名)它也得到了404?让我们看看。