为了账号安全,请及时绑定邮箱和手机立即绑定

aws elastic beanstalk golang 服务器 - 504 网关超时

aws elastic beanstalk golang 服务器 - 504 网关超时

Go
达令说 2023-02-06 19:33:49
我在这台机器上有一个在 AWS elastic beanstalk 上运行的 golang Web 服务器:Go 1 running on 64bit Amazon Linux 2;当我向服务器发出请求并执行多个进程时发生错误,因此完成整个过程大约需要 90 秒,因此 60 秒后 AWS beanstalk 服务器结束客户端连接并返回以下错误,尽管该过程90 秒后完全结束。它发送以下错误:<html> <head>   <title>504 Gateway Time-out</title></head> <body>   <center>       <h1>504 Gateway Time-out</h1>   </center></body> </html>源应用文件:.├── application.go├── cron.yaml└── public    └── index.html当我在我的本地机器上测试它时它运行良好并且需要 90 秒,只有当它在 Beanstalk 上运行时才会出现这个问题。我该如何解决?
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

504 Gateway Timeout表示 nginx 代理等待上游应用响应的时间过长。如果这种情况发生在通常在几秒后返回的端点上,很可能是 nginx 代理试图到达您的应用程序未侦听的端口(或者应用程序已崩溃)。

默认情况下,Elastic Beanstalk 将 nginx 代理配置为将请求转发到端口 5000 上的应用程序。您可以通过将PORT环境属性设置为主应用程序侦听的端口来覆盖默认端口。更多信息:AWS 反向代理文档

确保您的应用程序代码侦听正确的端口。

http.ListenAndServe(":5000", nil);

另一个原因可能是应用程序代码崩溃。检查 Elastic Beanstalk 中的最后 100 行日志。您还可以通过 SSH 连接到您的服务器并运行cat /var/log/eb-engine.log.

反向代理

另外,您似乎正在尝试静态托管/public/index.html. 您可以通过两种不同的方式执行此操作。


使用 Go(不推荐)

http.Handle("/", http.FileServer(http.Dir("./static")))

http.ListenAndServe(":3000", nil)

使用 Nginx(推荐)

通过扩展您的 nginx 配置,您可以使用代理服务器静态托管文件并在它们访问您的服务器应用程序之前重定向路由。


~/workspace/my-app/

|-- .platform

|   `-- nginx

|       `-- conf.d

|           `-- myconf.conf


查看完整回答
反对 回复 2023-02-06
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信