1 回答
TA贡献1853条经验 获得超9个赞
有几种解决方案:
让你的 Go 服务器直接监听 80 端口。但是,要小心你如何实现它。不要让您的服务以 root 身份运行,而是使用 Linux 功能(感谢@JimB 在评论中提醒我这一点)。您可以使用setcap授予进程绑定到特权端口的能力:
> setcap 'cap_net_bind_service=+ep' /path/to/your/application
使用像 Nginx 这样的 HTTP 反向代理将所有 HTTP 请求从端口 80 转发到你的 Go 应用程序。这是 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;
}
}
当您这样做时,您可以将 Go 应用程序配置为监听,127.0.0.1:4000而不是0.0.0.0:4000让您的应用程序只能通过端口 80访问。
如果并且当您在 Docker 容器中部署应用程序时,您可以简单地将容器端口 4000 映射到主机端口 80。有关更多信息,请参阅手册。
- 1 回答
- 0 关注
- 172 浏览
添加回答
举报