如何在端口 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 提供商控制面板上的防火墙规则!
尽管如此,我真的很想学习如何通过终端做到这一点!