当前位置: 首页 > 知识库问答 >
问题:

带有NodeJS的Google App Engine 502(坏网关)

邹野
2023-03-14

我有一个使用NodeJS、MongoDB(Mongoose作为驱动程序)和ExpressJS的完整web应用程序

这个项目在我的本地机器上运行得很好。今天我决定把一切都转移到生产上。我正在使用Google App Engine来托管我的应用程序,并使用Compose(形式上是MongoHQ)来托管我的数据库。

App Engine完美地服务于我的应用程序,尽管我的API似乎不起作用。我的API由example.com/API提供,每个请求(getpostdeleteput)都返回一个502(坏网关)错误。

我尝试在连接到远程MongoDB数据库的同时在本地机器上运行应用程序,结果运行得非常好。所以这一定是App Engine或NodeJS的问题,而不是MongoDB的问题。

我试过检查谷歌云内部的所有错误日志,尽管没有错误。

为什么App Engine/NodeJS为我的应用程序的静态内容提供的服务非常好,尽管不允许任何对我的API的请求?

共有2个答案

吴浩博
2023-03-14

只需确保您的服务器侦听8080端口https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build#listen_to_port_8080

燕经国
2023-03-14

502坏网关通常是Nginx端的错误。不幸的是,这些日志还没有出现在云日志中。

很多时候,问题是您的HTTP数据包对于缓冲区或类似的东西来说太大了。您可以看到nginx日志的方式如下所示:

  • 仅使用1个VM。这并不是绝对必要的,但是很多时候,如果您知道您的请求是在一台机器上,那么调试应用程序就会变得更加容易。您可以通过将其添加到应用程序中来完成此操作。yaml:

manual_scaling:instances:1然后重新部署

>

  • 将虚拟机从“谷歌拥有”切换到自我管理。这可以在云控制台中完成。转到Compute Engine,instances,单击与App Engine版本匹配的实例名,您将看到一个选项,将其切换到Self-Managed。

    GCloud compute ssh 到计算机的ssh

    Docker PS查看正在运行的容器。查找名为nginx的容器并获取其ID。

    一旦有了容器ID,就应该能够Docker exec-it --cat/var/log/nginx/error.log 。您可能希望ls整个日志目录。

    您可能会在那里看到一个错误,这将是一个更大的提示,说明发生了什么错误。

    我知道这比它应该做的要复杂得多:-\如果你对上面的步骤有任何问题,请留下评论。如果您确实发现了一个错误,但不确定如何处理它,也可以留下评论。

  •  类似资料:
    • 问题内容: 我有一个使用NodeJS,MongoDB(以Mongoose作为驱动程序)和ExpressJS的完整Web应用程序。 该项目可以在我的本地计算机上完美运行。今天,我决定将一切都投入生产。我正在使用Google App Engine托管我的应用程序,并使用Compose(以前是MongoHQ)托管我的数据库。 尽管我的API似乎不起作用,但App Engine可以完美地为我的应用程序提供

    • 我一个多星期都找不到解决办法。在dev服务器上一切正常,但在生产环境中则不然。我没有力量,我呼吁各位同事:) 我在Socket上使用Laravel echo服务器。io使用CloudFlare。尝试连接时,我收到一个错误:WebSocketError:收到意外状态代码(502坏网关) Ubuntu 16.04。7 LTS,Laravel Echo服务器:1.6。1,NodeJs:v12。19 拉威

    • 我是NodeJS的新手,我正试图从express和express-generator开始。我已经使用以下命令安装了express: 然后我安装了快速生成器模块: 然后,我为项目创建一个文件夹并安装解除依赖项: 那里一切正常,但当我尝试使用以下命令启动服务器时,问题就出现了: 好像服务启动了但是一启动就关闭了,结果: 当我尝试打开localhost:3000它不起作用。我在网上搜索,我还没有找到解决

    • 我的nginx.conf文件是这样的: 现在,在打开一些URL时,它抛出了502个坏网关,但对其他URL则没有。我犯的错误。日志为: 2019/01/10 23:53:39[错误]12139#12139:*5 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:127.0。0.1,服务器:localhost,请求:“GET/wordpress/HTTP/2.0”,上游:fas

    • 问题内容: 我正在构建一个使用postgresql在NodeJS上运行的应用程序。我正在将SequelizeJS用作ORM。为了避免使用真正的postgres守护程序并在自己的设备上安装nodejs,我使用了带有docker- compose的容器。 当我运行 它启动pg数据库 和nodejs服务器。但服务器无法连接到数据库。 如果我尝试在不使用容器的情况下运行服务器(在我的计算机上使用真正的no

    • 我不知道如何在我们的VPC中提供对AWS Lambda的出站Internet访问,同时还具有Internet网关以支持对我们VPC中某些资源的入站访问(从Internet)。 从下面提供的文档中,我了解到我们需要创建一个私有和公共子网(使用NAT),并且有一个路由表指向IGW,另一个指向NAT。 https://aws.amazon.com/premiumsupport/knowledge-cen