AWS ELB返回404,代表https:// domain_name:8000,但可通过public_ip:8000

时间:2019-05-27 16:21:01

标签: reactjs amazon-web-services go amazon-ec2 amazon-elb

我是在AWS上部署Web应用程序的初学者,我认为我有一个与AWS forward port 8000 from elb to port 8000 of EC2类似的问题,其中我在AWS ec2上运行了reactjs前端和golang api,并且在8000端口上运行了golang api可通过我的public_ip:8000访问该消息,并向我显示一条消息,说明我访问public_ip:8000时我的golang api可以运行。我使用弹性IP创建了public_ip。

我使用负载平衡器来获取HTTPS,因为我具有某些仅适用于HTTPS的功能。但是,当我使用https://domain_name:8000将请求发送到自己的API时,它说该请求不存在,并在使用应用程序负载平衡器时出现404错误。

我的域名使用AWS的Route 53和AWS名称服务器,并且不会出现任何问题,因为我可以正确地定向到我的普通域。我还添加了一条指向我的负载均衡器的记录。

我已经检查了所使用的安全组,并已将端口打开到我的IP地址。

我的实例状态检查: Instance Status checks

以下是我配置应用程序负载均衡器的目标组的方式: Target groups 对于我的听众,我已经使用HTTP 80,HTTPS 443和HTTPS 8000转发到我的目标组。

我已经尝试使用链接中提到的经典负载均衡器,但是当我使用domain_name时,它们都会超时。

任何人都知道一种更好的连接方式,或者一种更好的在AWS上构建我的reactjs前端和golang后端应用程序的方法,这些方法可能需要打开其他端口才能进行api访问。

我的经典负载均衡器端口转发配置: classic load balancer port

编辑:我注意到问题可能是我的目标组,因为它说端口8000不健康并且请求超时

1 个答案:

答案 0 :(得分:1)

花了很多时间来寻找端口,而谷歌搜索或AWS文档却无济于事,所以我将我的reactjs前端放在一个在端口80上运行的EC2实例中,并将我的服务器/ golang API放在另一个在该端口上运行的EC2实例中80,然后设置应用程序负载平衡器,以在调用HTTP:80或HTTPS:443时使用前端转发到目标组,并在调用HTTPS:8000时使用golang API转发到目标组。

请确保实例与负载均衡器位于同一可用区中,否则它将无法正常工作,并确保一切正常。