GoLang Web 服务器 - 外部访问 - 端口问题 - 如何在端口 9003(或任何其他端口)上提供服务?

GoLang Web 服务器 - 外部访问 - 端口问题 - 如何在端口 9003(或任何其他端口)上提供服务?

如何在端口 9003 (或任何其他端口) 上提供服务?

我有一个 Apache WebServer,运行在 VPS(ubuntu 16)上。作为标准,它在端口 80 上运行。如果我通过浏览器尝试:

http://104.XXX.YYY.237

它运行得很好。(我有一个完整的 php/mysql 应用程序在其上运行)

.....

现在,我想在端口 9003(或其他端口)上提供用 Golang 构建的公共 REST API

所以我在 main.go 文件中

func main() {

    router := NewRouter()

    log.Fatal(http.ListenAndServe(":9003", router))
}

当我尝试访问时:

http://104.XXX.YYY.237:9003

我没有收到任何回应。

...

我在本地主机上运行了类似的配置,我可以通过终端、curl、浏览器或 ajax 成功访问类似地址http://本地主机:9003

所以,我的 API 没有错误。

...

我对 Linux 和服务器配置了解甚少,因此,经过一番研究,我认为问题可能出在端口 9003 上!为了验证这个结论,我停止了 apache 服务,将 API 的端口更改为 80,然后!!BINGO !!!成功了!我能够使用浏览器访问我的 API。

...

经过进一步挖掘,我发现了这个(很棒的)Linux 命令:

网络状态监测

这给了我答复:(在我原来的配置恢复的情况下)

tcp6 0 0 :::9003 :::* LISTEN

tcp6 0 0 :::80 :::* LISTEN

tcp6 0 0 :::22 :::* LISTEN

tcp6 0 0 104.XXX.YYY.237:80 177.XX.YYY.243:4297 TIME_WAIT

我不是 Linux 专家,但第一行告诉我 9003 端口已打开并可供使用,就像 80 和 22 一样

但是最后一行告诉我服务器监听 104.XXX.YYY.237:80。

因此,我只写了一行。我得出结论,我应该期望类似这样的内容:

tcp6 0 0 104.XXX.YYY.237:9003 177.YY.XXX.243:4297 TIME_WAIT

我的问题是:

_ 如何使用我的 VPS 的 IP 地址(或稍后是我的域)通过给定端口提供对我的 API 的外部访问?_ 我的结论有误吗?

提前致谢

答案1

我设法解决了该问题并允许外部连接直接到端口 9003 上的 API!

为了实现这一点,我编辑了 VPS 提供商控制面板上的防火墙规则!

尽管如此,我真的很想学习如何通过终端做到这一点!

相关内容