目前我的go服務器正在端口4000上運行。要訪問web應用程序,我需要在瀏覽器中輸入somedomainname:4000
。golang - 如何將數據從默認端口路由到另一個[4000]端口
我想只有鍵入somedomainname
,它應該在端口的連接到網絡服務器4000
目前我的go服務器正在端口4000上運行。要訪問web應用程序,我需要在瀏覽器中輸入somedomainname:4000
。golang - 如何將數據從默認端口路由到另一個[4000]端口
我想只有鍵入somedomainname
,它應該在端口的連接到網絡服務器4000
有幾種方案來解決這個:
讓你的圍棋服務器的端口直接聆聽但是,要小心你如何實現這一點。 請勿以根的身份運行您的服務,但應該使用Linux功能(感謝@JimB在評論中提醒我注意這一點)。您可以使用setcap
授予過程的能力綁定到一個特權端口:
> setcap 'cap_net_bind_service=+ep' /path/to/your/application
使用HTTP反向代理Nginx的一樣,從端口80的HTTP請求轉發到您的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. See the manual以獲取更多信息。
讓你的圍棋服務器運行在端口80 – Volker
@Volker,目前其在4000端口不是80,我想在端口4000上運行它,但需要某種類型的映射,如果我在瀏覽器上輸入域名就應該向端口4000發出請求 – GCP
嘗試使用docker。您可以在端口4000上的Docker容器中運行服務器,並使容器顯示端口80 – elgris