Elastic Beanstalk EC2 实例在端口 5000 和端口 80 上响应 http 请求
Elastic Beanstalk EC2 instance responses http request on both port 5000 and port 80
我设置了一个 Elastic Beanstalk,负载均衡器将端口 80 转发到 EC2 实例上的端口 5000。我的 EC2 实例侦听端口 5000,而不是端口 80。EC2 实例有一个私有 IP 172.31.14.151。在与 EC2 运行 Springboot Web 服务器位于同一子网中的另一个 EC2 上,我得到了以下两个 http 请求的 http 响应:
curl 172.31.14.151:5000
curl 172.31.14.151:80
我不明白为什么我会收到来自 172.31.14.15:80 的 http 响应。我是 运行 的 EC2,curl 命令与 EC2 运行 网络服务器位于同一子网上。 http 请求不应通过任何路由器,也不应通过负载均衡器。但是网络服务器 运行 在端口 5000 上,而不是端口 80。
有网络服务器的EC2实例上是否有Nginx实例运行?
如果我将网络服务器配置为侦听端口 80 并让 Elastic 负载均衡器将端口 80 转发到 EC2 实例上的端口 80,我会从执行 curl 请求时收到 Nginx 502 错误网关响应
curl 172.31.14.151:80
我不知道哪个Elastic Beanstalk Solution Stack you are using, but most of the AWS Solution Stacks come coupled with Proxy Servers by default. For example, if you're running Java SE the proxy server is NGINX, but if you're running Java with Tomcat代理服务器是Apache。
默认情况下,这些代理在默认 HTTP 端口 (80
) 上接受 HTTP 流量,管理连接,然后代理来自支持应用程序服务器的请求(在您的情况下,端口 5000
) .这有助于管理与支持应用程序的连接,以及提供静态内容,或者如果您正确配置它们,则可以根据 HTTP 状态代码自定义错误消息。我建议,如果可以的话,将负载均衡器流量发送到端口 80
,因为 Apache 或 NGINX 通常可以比大多数自定义应用程序更好地处理连接负载。
您是否检查过 inbound rules 您使用的安全组?
有网络服务器的EC2实例上有Nginx实例运行吗? - 是的。创建新环境时,可以选择预配置平台,选择NodeJS Platform.
如果你的应用是异构应用,还是用容器比较好。您可以改为在 Elasticbeanstalk or use Elastic Container Service 上部署容器化应用程序。
我设置了一个 Elastic Beanstalk,负载均衡器将端口 80 转发到 EC2 实例上的端口 5000。我的 EC2 实例侦听端口 5000,而不是端口 80。EC2 实例有一个私有 IP 172.31.14.151。在与 EC2 运行 Springboot Web 服务器位于同一子网中的另一个 EC2 上,我得到了以下两个 http 请求的 http 响应:
curl 172.31.14.151:5000
curl 172.31.14.151:80
我不明白为什么我会收到来自 172.31.14.15:80 的 http 响应。我是 运行 的 EC2,curl 命令与 EC2 运行 网络服务器位于同一子网上。 http 请求不应通过任何路由器,也不应通过负载均衡器。但是网络服务器 运行 在端口 5000 上,而不是端口 80。
有网络服务器的EC2实例上是否有Nginx实例运行?
如果我将网络服务器配置为侦听端口 80 并让 Elastic 负载均衡器将端口 80 转发到 EC2 实例上的端口 80,我会从执行 curl 请求时收到 Nginx 502 错误网关响应
curl 172.31.14.151:80
我不知道哪个Elastic Beanstalk Solution Stack you are using, but most of the AWS Solution Stacks come coupled with Proxy Servers by default. For example, if you're running Java SE the proxy server is NGINX, but if you're running Java with Tomcat代理服务器是Apache。
默认情况下,这些代理在默认 HTTP 端口 (80
) 上接受 HTTP 流量,管理连接,然后代理来自支持应用程序服务器的请求(在您的情况下,端口 5000
) .这有助于管理与支持应用程序的连接,以及提供静态内容,或者如果您正确配置它们,则可以根据 HTTP 状态代码自定义错误消息。我建议,如果可以的话,将负载均衡器流量发送到端口 80
,因为 Apache 或 NGINX 通常可以比大多数自定义应用程序更好地处理连接负载。
您是否检查过 inbound rules 您使用的安全组?
有网络服务器的EC2实例上有Nginx实例运行吗? - 是的。创建新环境时,可以选择预配置平台,选择NodeJS Platform.
如果你的应用是异构应用,还是用容器比较好。您可以改为在 Elasticbeanstalk or use Elastic Container Service 上部署容器化应用程序。