Nginx模块配置教程:基于四层TCP协议配置代理实现跳板机功能

2020年11月23日14:42:19 发表评论 1,126
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 






     
    

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: