为了账号安全,请及时绑定邮箱和手机立即绑定

golang - 如何将数据从默认端口路由到另一个 [4000] 端口

golang - 如何将数据从默认端口路由到另一个 [4000] 端口

Go
猛跑小猪 2021-12-06 19:09:01
目前我的 go 服务器运行在端口 4000 上。要访问 Web 应用程序,我需要somedomainname:4000在浏览器中输入。我只想打字somedomainname,它应该在端口 4000 上连接到 Web 服务器。
查看完整描述

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。有关更多信息,请参阅手册。


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信