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模块,第一种方式可能更加适合,但实际安装部署过程中在可选保留当前配置文件的同时同样会删除、替换原有二进制文件。
文章评论