如何在連接埠 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 提供者控制面板上編輯了防火牆規則!
雖然,我真的很想學習如何透過終端機來做到這一點!