亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Oracle 云 - golang http 服務器無法在端口 80 上運行

Oracle 云 - golang http 服務器無法在端口 80 上運行

Go
慕的地6264312 2022-10-10 15:22:33
我有一個應該監聽端口的 golang http 服務器80。我的問題是:程序正常編譯但不聽就退出。當我將端口更改為8080一切正常時,我可以訪問我的網頁。我使用 Ubuntu 作為我的操作系統。我添加了一個允許端口 80 的入口規則我不明白為什么我的服務器沒有監聽端口 80 而是監聽所有其他端口。謝謝您的幫助。package mainimport (    "fmt"    "net/http")func hello(w http.ResponseWriter, r *http.Request) {    fmt.Fprintf(w, "<p>Hello world!</p>")}func main() {        http.HandleFunc("/", hello)        http.ListenAndServe(":80", nil)}
查看完整描述

2 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

檢查錯誤


err := http.ListenAndServe(":80", nil)

fmt.Println(err)

我本地的輸出是這樣的,但它可能有其他原因


listen tcp :80: bind: permission denied


查看完整回答
反對 回復 2022-10-10
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

端口 80 是保留/特殊端口,在許多(如果不是全部)Linux / Unix 系統上必須通過 root 級用戶訪問。您需要以 root / wheel group / sudo 用戶身份運行它。或者您可以在 8080 上運行它,并通過在 systemd 上具有根級別的東西(如 nginx 或類似的東西)進行反向代理。這是 Web 應用程序和代理轉發的常見使用模式。


我建議不要讓你的 golang 二進制文件以 root 身份運行,因為如果沒有為以 root 身份運行的用戶提供其他保護措施,這根本不安全。


nginx片段:


  location / {

    proxy_pass http://0.0.0.0:8080;

}

要確認這是問題所在,您可以運行它sudo ./mybinary并確認它在 80 上工作并收聽。


查看完整回答
反對 回復 2022-10-10
  • 2 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號