Nginx实现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四层转发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1的配置过程
Ubuntu安装Nginx有两种方式,一种是通过命令的方式,这种方式安装的Nginx版本低,之前漏扫扫出来Nginx版本低,需要升级所以现在用编译的方式安装版本高点的,本文介绍Ubuntu22.04.1 LTS编译安装nginx1.22.1的配置过程,本文给大家介绍的非常详细,需要的朋友参考下吧2024-01-01Nginx 域名SSL证书配置(网站 http 升级为 https)
这篇文章主要介绍了Nginx 域名SSL证书配置(网站 http 升级为 https),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12nginx添加http_ssl_module并且配置域名指定端口的操作方法
这篇文章主要介绍了nginx添加http_ssl_module并且配置域名指定端口的操作方法,文末附带linux下防火墙和开放端口,需要的朋友可以参考下2023-11-11HTTP 499 状态码 nginx下 499错误的解决办法
HTTP状态码出现499错误有多种情况,499错误是什么?Nginx 499错误的原因及解决方法,下面跟着脚本之家小编一起学习吧2016-06-06
最新评论