在服务器上做端口转发,用得最多的就是nginx,我所在的项目中大部分前端、后端路由也都是通过nginx转发的。大致流程为:

但是我个人使用nginx最多的还是http转发,如下图,/api/back开头的路径转发到http的8105端口,其他的路径转发到前端/home/admin/back/dist目录下

但是实际项目中,经常会遇到一些非http协议的转发,例如netty客户端和服务端的连接,中间需要做一个中间转发层,搜索资料说可以使用nginx的Stream配置(大概代码如下),但是实际在实践,发现使用nginx转发有问题,客户端可以正常连接nginx,但是nginx到不了服务端,这块试了下,也不知道为什么。

于是在网上搜了下,发现rinetd工具可以满足我的需求。现将rinetd大致安装配置流程记录如下:

1、安装

wget http://www.rinetd.com/download/rinetd.tar.gz
tar zxvf rinetd.tar.gz
cd rinetd
mkdir -p /usr/man/man8
make && make install

2、配置端口转发

vi /etc/rinetd.conf

 

0.0.0.0 7891 127.0.0.1 7890

配置的意思是将服务器的7891端口转到到本地的7890端口,也可以转发到内网其他机器

3、启动

rinetd -c /etc/rinetd.conf

4、停止

killall rinetd

5、校验

 

netstat -tanulp|grep rinetd
[root@xxxxxxx rinetd]# netstat -tanulp|grep rinetd
tcp        0      0 0.0.0.0:7891            0.0.0.0:*               LISTEN      5653/rinetd
tcp        0      0 172.25.154.91:7891      172.25.154.91:33308     ESTABLISHED 5653/rinetd
tcp        0      0 127.0.0.1:54954         127.0.0.1:7890          ESTABLISHED 5653/rinetd

附言,最近查资料iptables也可以实现端口转发,有时间实践一下。

 

Logo

更多推荐