从外部世界连接到我自己的golang服务器

时间:2017-09-12 03:08:02

标签: http go

所以我确实用go编写了这段代码:

// firstserver - my first server
package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", Handler)
    err := http.ListenAndServe(":80", nil)
    if err != nil {
        log.Fatal(err)
    }
}

// Handler - a handler function for a normal enter
func Handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "You're connected")
}

现在,当我转到我的浏览器并输入localhost:80(或只是localhost)时,页面会加载,我会看到消息You're connected。现在我也想尝试从其他设备连接。所以我带了另一台笔记本电脑。我检查了我的适配器地址192.168.0.15。所以当我在另一台笔记本电脑上输入192.168.0.15:80时,它再次起作用,很酷!

Primarly我正在尝试做一些简单的服务器,当我在大学时,在我的手机上使用它,检查时间表,有一些笔记等。我拿了我的智能手机,我从我的WiFi断开,切换到我的智能手机互联网又笨拙地输入了192.168.0.15:80。我知道它不起作用,因为它不是我的外部IP。它没有。

所以我查看了我的ISP提供商给我的IP地址,它看起来像这样:88.156.xxx.xx。现在在我的手机上输入了88.156.xxx.xx:80但它没有用。我试图在网上搜索SO和其他资源,了解如何从局域网外部远程连接到我的服务器。我没有找到答案。有没有办法做到这一点,我不知道,支付各种事情,或类似的事情?

PS我住在租来的房间里,不仅我在家里,所以我没有办法配置路由器(手动或通过网络)

1 个答案:

答案 0 :(得分:1)

您可以采用的一种方法是将其部署在具有公共IP(https://aws.amazon.com/free/)的AWS免费套餐实例上。 完成旋转EC2实例(https://aws.amazon.com/free/)后,将Web服务器的二进制文件复制到该实例chrome.devtools.network.onRequestFinished.addListener(onRequestFinished); 您需要确保该实例上的安全组允许从该端口上的Internet(0.0.0.0/0)进行入口

要访问它: 使用EC2实例的公共IP或公共DNS以及服务器的端口号(在您的情况下为80)