Nginx 转发端口的配置

流量转发不仅可以用 iptables ,nginx 也同样可以做到,并且还有不俗的表现。

简单的配置

为方便管理,首先新建一个文件夹,例如在路径 /usr/local/nginx/conf 下新建一个名为 tcp.d 的文件夹

在文件夹中新建一个 .conf 文件,例如 tcp.conf ,文件内容如下

stream {                                                                        
                                                                                
    upstream tcpssh {                
        hash $remote_addr consistent;                                           
        server 1.1.1.1:443 weight=3 max_fails=3 fail_timeout=10s;                                     
    }                                                                           
                                                                                
    server {                                                                    
        listen 18888;                                                           
        listen 18888 udp;                                                       
        proxy_pass tcpssh;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;                                                      
    } 
}
  • 这里以转发IP 1.1.1.1443 端口为例,实际需要替换为你所需要转发的 IP/域名:端口
  • listen 后的监听端口可替换为你所需要监听的端口
  • proxy_pass 后的字段为 upstream 后的字段,可自行替换,二者需相同
  • weight 为权重
转发多个地址

如需转发多个地址,在 stream 模块内新增相应内容即可,例如

stream {                                                                        
                                                                                
    upstream tcpssh {                
        hash $remote_addr consistent;                                           
        server 1.1.1.1:443 weight=3 max_fails=3 fail_timeout=10s;                                     
    }                                                                           
                                                                                
    server {                                                                    
        listen 18888;                                                           
        listen 18888 udp;                                                       
        proxy_pass tcpssh;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;                                                      
    } 

    upstream tcpssh {                
        hash $remote_addr consistent;                                           
        server 2.2.2.2:443 weight=4 max_fails=3 fail_timeout=10s;                                     
    }                                                                           
                                                                                
    server {                                                                    
        listen 18889;                                                           
        listen 18889 udp;                                                       
        proxy_pass tcp2;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;                                                      
    } 
}
使转发生效

修改 nginx.conf ,添加如下一行以包含之前创建的配置文件

include /usr/local/nginx/conf/tcp.d/*.conf;

重载/重启 nginx

service nginx reload
service nginx restart

至此转发应该就成功了。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注