GoLang Webserver - 外部存取 - 連接埠問題 - 如何在連接埠 9003(或任何其他連接埠)上提供服務?

GoLang Webserver - 外部存取 - 連接埠問題 - 如何在連接埠 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,然後!答對了 ! !有效 !我可以使用瀏覽器存取我的 API。

進一步挖掘,我發現了這個(很棒的)linux 指令:

netstat-vatn

這給了我回應:(在我恢復的原始配置下)

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 提供者控制面板上編輯了防火牆規則!

雖然,我真的很想學習如何透過終端機來做到這一點!

相關內容