服务器 > 网络 > udp

Nginx实现UDP四层转发的过程

127人参与 2024-09-18 udp

一、背景

        有2台云服务器,一台国内的、一台国外的,我本地网络直连国外的ip上vpn速率很慢。但是由于云服务器厂商有线路优化,国内的服务器到国外的还挺快的,并且我本地到国内服务器速率是ok的。那么想把这个udp端口做下转发,这样能加速我的上网速率。

        说干就干。这个第一个想到很简单的haproxy做4层代理,配置也很快,监听端口配置、转发目标端口、开放安全组即可。 但是我忽略了一个问题,找了半天发现haproxy不能代理udp流量。

        别的工具又不想尝试一遍了,所以索性选择了常见的nginx进行4层代理,支持tcp、也支持udp。

二、nginx配置4层代理

 1、首先通过yum安装的nginx,默认不存在--with-stream的模块,需要执行安装命令

yum install nginx-mod-stream -y

  nginx -v 输出的是2(错误输出), 如果没有将2>&1的话,无法直接grep查找关键词。所以将错误输出导到标准输出,才能进行正常的grep. 这个需要注意下。 

nginx -v 2>&1  | grep -w -- '--with-stream'

  安装完毕之后查看nginx的模块列表,是否存在--with-stream:

 2、修改nginx.conf配置文件如下

http {
    # ...  http  服务配置部分
}
stream {
    server {
        listen 500 udp;
        proxy_pass vpn_500;
    }
    upstream vpn_500 {
        server $ip:500;
    }
    server {
        listen 4500 udp;
        proxy_pass vpn_4500;
    }
    upstream vpn_4500 {
        server $ip:4500;
    }
}

3、nginx -t检查一下nginx.conf是否存在语法错误。 不存在错误,则nginx -s reload或者nginx启动即可

4、检查代理的udp端口500和4500是否在监听

  查看监听端口,500和4500正在udp进行监听,同时本地的vpn工具更换下ip即可测试正常连接。同时上网体验明显更好。

ss -lnup | grep 500

 三、总结

        haproxy只支持tcp的4层转发以及7层http的转发,但是不支持udp流量转发。 nginx支持http、tcp4层、udp4层。同时nginx配置我们相对熟悉,如果haproxy搞不定的事情,我们可以借助nginx实现也是没问题的。

到此这篇关于nginx实现udp四层转发的文章就介绍到这了,更多相关nginx udp四层转发内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

nginx安装stream模块配置tcp/udp端口转发

08-06

UDP丢包问题解决经验梳理

08-06

udp接收发送数据程序以及注意事项

08-06

网络编程套接字(二)之UDP服务器简单实现

08-06

Nginx实现TCP和UDP代理的方法步骤

12-28

《计算机网络微课堂》5-3 UDP和TCP的对比

08-03

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论