我正在探索 Google Cloud Platform 来托管我的解决方案。我已经在本地开发了它。它是更广泛解决方案的一部分,但我需要一些帮助的部分涉及应用程序服务器(VueJS/NodeJS)和数据库服务器(NodeJS + MongoDB)。当一切都是本地的(即在我的机器中)时,Web 应用程序和数据库服务器之间的连接可以正常工作。Web 应用程序通过 fetch 访问 API (db) 服务器。它访问的地址是 localhost:4000,因为 DB 服务器最初是在 localhost:4000 上运行的。
流程如下:用户连接到开放8080端口的VM的IP,访问Web界面。然后用户需要登录:从应用程序服务器到数据库服务器的 POST 发送用户名和密码。数据库服务器 (REST) 连接到 MongoDB 实例并对用户进行身份验证。用户被发送回应用服务器。
虽然我可以在 shell 中使用 cUrl 对用户进行身份验证,但通过网页的 POST 不起作用。事实上我得到一个
“POST http://localhost:4000/users/authenticate net::ERR_CONNECTION_TIMED_OUT”
在数据库服务器端,请求永远不会到达服务器。使用(在连接到 VM 的外壳中)
curl --location --request POST 'http://localhost:4000/users/authenticate' --header 'Content-Type: application/json' --data-raw '{ "username": "username", "password": "password" }
工作正常。curl 也可以通过使用 VM 的内部 IP 来工作。
这是服务器和 MongoDB 的端口
netstat -tulpn
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 9128/node
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 546/mongod
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 9224/node
我已经玩了一点服务器的地址,但到目前为止没有得到任何结果。所有 GCP 配置都是通过界面完成的,而不是通过云 shell 完成的。
任何建议表示赞赏。
如果需要更多详细信息,我很乐意提供。