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

我在这台机器上有一个在 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 上运行时才会出现这个问题。我该如何解决?


达令说
浏览 119回答 1
1回答

largeQ

504 Gateway Timeout表示 nginx 代理等待上游应用响应的时间过长。如果这种情况发生在通常在几秒后返回的端点上,很可能是 nginx 代理试图到达您的应用程序未侦听的端口(或者应用程序已崩溃)。默认情况下,Elastic Beanstalk 将 nginx 代理配置为将请求转发到端口 5000 上的应用程序。您可以通过将PORT环境属性设置为主应用程序侦听的端口来覆盖默认端口。更多信息:AWS 反向代理文档确保您的应用程序代码侦听正确的端口。http.ListenAndServe(":5000",&nbsp;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|&nbsp; &nbsp;`-- nginx|&nbsp; &nbsp; &nbsp; &nbsp;`-- conf.d|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`-- myconf.conf
打开App,查看更多内容
随时随地看视频慕课网APP