1 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
有幾種解決方案:
讓你的 Go 服務(wù)器直接監(jiān)聽(tīng) 80 端口。但是,要小心你如何實(shí)現(xiàn)它。不要讓您的服務(wù)以 root 身份運(yùn)行,而是使用 Linux 功能(感謝@JimB 在評(píng)論中提醒我這一點(diǎn))。您可以使用setcap授予進(jìn)程綁定到特權(quán)端口的能力:
> setcap 'cap_net_bind_service=+ep' /path/to/your/application
使用像 Nginx 這樣的 HTTP 反向代理將所有 HTTP 請(qǐng)求從端口 80 轉(zhuǎn)發(fā)到你的 Go 應(yīng)用程序。這是 Nginx 的示例配置文件:
upstream yourgoapplication {
server localhost:4000;
}
server {
listen 80;
server_name somedomainname;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://yourgoapplication;
}
}
當(dāng)您這樣做時(shí),您可以將 Go 應(yīng)用程序配置為監(jiān)聽(tīng),127.0.0.1:4000而不是0.0.0.0:4000讓您的應(yīng)用程序只能通過(guò)端口 80訪問(wèn)。
如果并且當(dāng)您在 Docker 容器中部署應(yīng)用程序時(shí),您可以簡(jiǎn)單地將容器端口 4000 映射到主機(jī)端口 80。有關(guān)更多信息,請(qǐng)參閱手冊(cè)。
- 1 回答
- 0 關(guān)注
- 197 瀏覽
添加回答
舉報(bào)