猿问

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

目前我的 go 服务器运行在端口 4000 上。要访问 Web 应用程序,我需要somedomainname:4000在浏览器中输入。

我只想打字somedomainname,它应该在端口 4000 上连接到 Web 服务器。


猛跑小猪
浏览 173回答 1
1回答

暮色呼如

有几种解决方案:让你的 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。有关更多信息,请参阅手册。
随时随地看视频慕课网APP

相关分类

Go
我要回答