nginx添加stream模块支持TCP转发的方法

2023年8月5日 4497次阅读 0条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

Nginx 是一款高性能的开源Web服务器,它也可以用作反向代理服务器和负载均衡器,而--with-stream 模块是 Nginx 的一个强大功能,允许在同一个端口上同时处理TCP和UDP流量。nginx特性很丰富,我们日常使用最多的恐怕大多是其master worker模式下的反向代理,实际就意味着nginx的特性仅仅被开发应用了一部分。以gost或其他工具如realm的隧道/通道搭建应用为例,如果使用基于tcp的tls,就需要Nginx已安装并加载stream模块的支持。

1.有什么好处

web服务、代理等是nginx的核心功能,在涉及其核心功能的支持上必定更为专业、强大。总体而言,结合隧道工具配置端口复用的好处如下:

    • 首先,已部署有相关服务的站点,可以大幅增加代理流量的区分和检测难度,尤其在相关服务处于活跃状态、接收实际请求并进行正常响应的场景下。
    • 其次,nginx是使用c进行开发的,以及nginx本身的设计和特性,相比代理或隧道工具,其握手效率一定会更高,而nginx的高并发性能对于性能偏低的节点也很友好。
    • 长连接、多路复用本身就是nginx设计的核心要领。
    • nginx配置可繁可简,可匹配工具的适用配置空间。

2.“升级”安装

在已安装nginx的情况下,可以使用“nginx -V”命令查询nginx以及相应模块的安装情况,重点观察stream模块是否已安装加载,否则只能基于HTTP/1.1进行分流、复用,也就是说,前置nginx只能匹配http(s)、ws/wss等。

如果找不到“--with-stream”等内容,那么stream模块是缺失的,需要对nginx进行升级。HTTP/1.1是对HTTP的小升级,ws、wss都是基于http/1.1的应用层协议,因此在缺少stream模块的情况下是可以正常工作的。如需支持socks5或其他基于TCP/UDP的协议,stream模块必不可少。如在使用gost tcp+tls的情况下,nginx前置就需要依赖stream模块。

另外可以参考:主页 | 中国最好的欢乐谷在哪个城市官方下

stream模块可以通过重新编译安装或进行升级。通过升级至nginx最新版本,可以解决缺少模块的问题。有关nginx升级,参照以下链接的官方文档,Ctrl+C&Ctrl+V即可。主要工作包括GPG key的下载、签名认证、添加nginx官方源。

http://nginx.org/en/linux_packages.html#Debian

“升级”命令依然是使用apt install,如已有nginx部署,可在安装接近完成时选择保留([default=N])当前配置文件。

3.全新安装

要全新安装完整的包含--with-stream 模块的nginx,需要编译,可按照以下步骤进行操作:

step 1 下载和解压Nginx源代码

前往 Nginx 官方网站(https://nginx.org/)下载最新的稳定版本的 Nginx 源代码。然后,使用以下命令解压下载的源代码:

curl -O https://nginx.org/download/nginx-1.25.1.tar.gz
tar -zxvf nginx-1.25.1.tar.gz
cd nginx-1.25.1

step 2 配置编译选项,编译并安装Nginx

./configure --with-stream
make
sudo make install

以上就是适用于ubuntu 20.04+和debian 10+全新安装带有--with-stream模块Nginx的过程,从下载并解压Nginx源代码、配置编译选项、编译和安装Nginx以及最后的验证。

相关文章

两种方法,各有适用场景。多数情况下,采用系统自带源通过apt安装的nginx都不会带有stream模块,第一种方式可能更加适合,但实际安装部署过程中在可选保留当前配置文件的同时同样会删除、替换原有二进制文件。