【Nginx】基于四层TCP协议配置代理实现跳板机功能

TangLu 未命名 2018-12-08 16974 0

Nginx不仅可以在TCP/IP的七层进行反向代理,实现根据location进行灵活的转发。还可以对四层网络协议进行代理,实现一个隧道功能,代替Haproxy。比如客户端需要请求内网服务,这个时候可以对一个具有公网IP并且和内网服务器能互通的Nginx服务器进行配置,在Nginx服务器上配置一个其他端口(不能和目标端口一样),将请求该端口的客户端转发到内网的服务器上。该功能依赖于ngx_stream_core_module。

下面是配置示例:

stream {  #定义stream,类似nginx的upstream
#定义了一个ssh的代理
    upstream ssh_proxy {
        hash  $remote_addr  consistent;
        server    192.168.1.100:22;
    }
#定义了一个mysql的代理
    upstream mysql_proxy {
        hash  $remote_addr  consistent;
        server    192.168.1.100:3306;
    }
#引用代理
    server {
        listen 6666;  #这个端口是nginx的代理端口
        proxy_connect_timeout 10s;
        proxy_timeout 30s;
        proxy_pass ssh_proxy;  #将访问nginx_ip:6666的请求代理到ssh_proxy这个upstream里的server地址
    }
    server {
        listen 7777;
        proxy_connect_timeout 10s;
        proxy_timeout 30s;
        proxy_pass mysql_proxy;
    }
}



启动Nginx后就会监听6666端口,这个时候客户端访问6666端口会跳转到后端服务器的22端口,使用MySQL客户端工具去连接Nginx服务器7777端口也会跳转到后端3306端口。

ssh -p 6666 root@222.121.1.47



评论