golang 可以监听多个端口吗

Python041

golang 可以监听多个端口吗,第1张

由于linux的socket监听机制和TCP协议,多个进程无法监听同一个端口,但是具体到nginx,可以多个nginx进程监听到不同端口,通过一个主进程端口做upstream来实现负载均衡,这个有点类似于网络的汇聚,可以设置不同的策略,比如iphash,urlhash或者RR。

内网穿透即是使用公网服务器作为代理,转发内网(如办公室、家里)的网络请求使其能够在外网中被访问到。

server端监听两个端口,一个用来和接收用户的http请求,一个监听gRPC客户端,和内网服务器进行通信;

client启动时连接server端;

当User请求server http端口时,将http进行阻塞,并将User请求内容通过gRPC发给client;

client将从server收到的请求发往本地的http服务;

client将从本地程序收到的http response通过gRPC发送给server;

server结束http阻塞,将从client收到的http response发给User。

github地址: https://github.com/itchin/proxy