托管在 AWS 上时无法访问 Go 服务器

San*_*lal 0 amazon-ec2 go amazon-web-services

我使用 gin 在 Go 中创建了一个项目,它在本地运行良好。但是,当我尝试在 AWS 上的 EC2 实例上部署它时,我无法访问服务器上的 API。

我在托管机器上执行了 ssh 并给出了 curl 请求 ( curl localhost:8080) 并给出了正确的响应。但是无法访问来自外部的任何请求。

服务器在端口 8080 上运行。我已打开 AWS 安全组中的端口。

是否需要在 Go/gin 中进行任何设置才能从 Internet 访问它?

示例代码:

package main

import (
    "myConstants"
    "myDatabase"
    "myMiddleware"
    "onboarding"

    "github.com/gin-gonic/gin"
)

func main() {

    var db = myDatabase.DBConnect()

    router := gin.Default()

    router.Use(myMiddleware.RestrictInputContent)
    router.Use(myMiddleware.CheckToken(db))
    router.Use(myMiddleware.RequestLoggerMiddleware())

    router.POST("/signup", onboarding.Signup(db))
    router.POST("/login", onboarding.Login(db))
    router.POST("/logout", onboarding.Logout(db))
    router.GET("/", onboarding.Hello(db))

    defer db.Close()

    //Listen and serve
    router.Run("127.0.0.1:8080")

}
Run Code Online (Sandbox Code Playgroud)

San*_*lal 5

将 router.Run 从 更改router.Run("127.0.0.1:8080")router.Run(":8080")并且它可以工作。正如@elithrar 和@user3591723 所建议的,127.0.0.1(本地主机)只是机器上的环回接口绑定到“:8080”意味着 0.0.0.0:8080 - 这意味着所有接口