Ubuntu检查并启用 Nginx 的stream模块或重新安装支持stream模块的Nginx

stream 模块允许 Nginx 处理 TCP 和 UDP 流量,常用于负载均衡和端口转发等场景。本文将详细介绍如何检查 Nginx 是否支持 stream 模块,以及在需要时如何启用该模块。

1. 检查 Nginx 是否支持 stream 模块

首先,需要确认当前安装的 Nginx 是否已经编译并启用了 stream 模块。可以通过以下命令查看 Nginx 的编译参数:

nginx -V 2>&1 | grep -- '--with-stream'

有输出:表示 Nginx 已支持 stream 模块。
无输出:说明 Nginx 未编译 stream 模块,需要按照后续方法进行启用。

2. 启用 stream 模块的方法

如果当前 Nginx 不支持 stream 模块,可以选择以下几种方法之一来启用该模块。

方法 1:安装支持 stream 模块的官方 Nginx 版本

Ubuntu 的默认仓库可能不包含支持 stream 模块的 Nginx 版本。你可以通过添加 Nginx 官方仓库来安装支持 stream 模块的版本。

步骤 1:添加 Nginx 官方仓库

运行以下命令以添加 Nginx 官方 GPG 密钥和软件源:

sudo apt update
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update
步骤 2:安装 Nginx

安装最新版本的 Nginx:

sudo apt install nginx
步骤 3:验证 stream 模块

安装完成后,检查是否支持 stream 模块:

nginx -V 2>&1 | grep -- '--with-stream'

如果仍然不支持,可能需要安装特定版本的 Nginx(如 nginx-extras),请参考方法 3。

方法 2:重新编译 Nginx 以启用 stream 模块

如果官方仓库中的版本仍不支持 stream 模块,可以手动编译 Nginx 并启用所需模块。

步骤 1:安装编译依赖

确保系统已安装编译 Nginx 所需的依赖包:

sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g zlib1g-dev
步骤 2:下载 Nginx 源码

前往 Nginx 官方下载页面 获取最新版本的源码包,或者使用以下命令下载指定版本(以 1.25.3 为例):

wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
步骤 3:获取当前 Nginx 编译参数(可选)

如果你已经安装了 Nginx,可以获取当前的编译参数,以便在重新编译时保留这些配置:

nginx -V 2>&1 | grep -- '--add-module'

将输出的参数记录下来,稍后在重新编译时使用。

步骤 4:配置编译选项

运行 ./configure 脚本并添加 --with-stream 参数。如果需要保留现有的编译参数,可以将之前记录的参数一并添加。例如:

./configure --with-stream [其他参数]

示例(假设之前记录的参数为 --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf):

./configure --with-stream --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf

如果不确定其他参数,可以直接运行:

./configure --with-stream
步骤 5:编译并安装

编译源码并安装 Nginx:

make
sudo make install
步骤 6:验证安装

安装完成后,验证 stream 模块是否已启用:

nginx -V 2>&1 | grep -- '--with-stream'

有输出:表示 stream 模块已成功启用。

注意:手动编译安装的 Nginx 不会被系统的包管理器管理,建议备份原有配置并谨慎操作。

方法 3:使用 nginx-extras

某些 Linux 发行版的官方仓库提供了包含 stream 模块的 nginx-extras 包,可以简化安装过程。

步骤 1:安装 nginx-extras

运行以下命令安装 nginx-extras

sudo apt update
sudo apt install nginx-extras
步骤 2:验证 stream 模块

安装完成后,检查 stream 模块是否启用:

nginx -V 2>&1 | grep -- '--with-stream'

有输出:表示 stream 模块已成功启用。

注意nginx-extras 包含了额外的模块,可能会占用更多的系统资源。如果只需要 stream 模块,可以考虑其他方法以减少资源占用。

3. 配置 stream 模块示例

启用 stream 模块后,可以在 Nginx 配置文件中使用 stream 块来处理 TCP/UDP 流量。以下是一个简单的负载均衡配置示例:

stream {upstream backend {server backend1.example.com:12345;server backend2.example.com:12345;server backend3.example.com:12345;}server {listen 12345;proxy_pass backend;# 可选配置proxy_timeout 1h;proxy_connect_timeout 10s;}
}

配置说明

upstream:定义了一组后端服务器,Nginx 将流量分发到这些服务器。
server:监听指定的端口(如 12345),并将接收到的流量转发到 upstream 定义的后端服务器。
可选配置
proxy_timeout:设置代理连接的超时时间。
proxy_connect_timeout:设置连接到后端服务器的超时时间。

4. 测试并重新加载 Nginx 配置

完成配置后,建议先测试配置文件的语法是否正确,再重新加载 Nginx 以应用更改。

测试配置文件

sudo nginx -t

预期输出

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载 Nginx

如果配置测试通过,重新加载 Nginx 以应用新配置:

sudo systemctl reload nginx

5. 常见问题排查

5.1 无法找到 stream 模块

确认安装方法:确保按照上述方法正确安装了支持 stream 模块的 Nginx 版本。
检查编译参数:使用 nginx -V 确认 --with-stream 参数已包含在编译选项中。

5.2 配置文件语法错误

详细错误信息:运行 nginx -t 查看具体的错误提示,根据提示修正配置文件中的问题。
日志查看:检查 Nginx 的错误日志获取更多信息,日志文件通常位于 /var/log/nginx/error.log

5.3 权限问题

配置文件权限:确保 Nginx 配置文件的权限正确,通常应为 644,且所有者为 root
目录权限:确保 Nginx 有权限访问配置中指定的目录和文件。

6. 总结

通过上述方法,你可以在 Ubuntu 系统上启用 Nginx 的 stream 模块,并利用其强大的流量处理能力来满足各种需求。选择合适的方法安装或编译 Nginx,确保配置文件的正确性,并定期监控和维护 Nginx 服务,以实现高效稳定的运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38402.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode hot 100 131】分割回文串

解法一:回溯法动态规划法 回溯法: 假设我们当前搜索到字符串的第 i 个字符,且 s[0…i−1] 位置的所有字符已经被分割成若干个回文串,并且分割结果被放入了答案数组 ans 中,那么我们就需要枚举下一个回文串的右边界 j…

ToDesk云电脑各类鼠标有什么区别?虚拟/3D/游戏鼠标等各有利

不知道各位在使用ToDesk云电脑的时候是否是有注意到,这其中的鼠标竟有多种名称、多种模式可以选,比如锁定鼠标、3D鼠标、游戏鼠标这几项。 那么这些不同名称的鼠标都代表什么意思呐,又应该怎么选择、怎么用呐?本篇内容小编就为大…

手机怎么换网络IP有什么用?操作指南与场景应用‌

在数字化时代,手机已经成为我们日常生活中不可或缺的一部分,无论是工作、学习还是娱乐,手机都扮演着至关重要的角色。而在手机的使用过程中,网络IP地址作为设备在互联网上的唯一标识符,其重要性和作用不容忽视。本文将…

Bulk Rename Utility(BRU)——大批量重命名实用程序

Bulk Rename Utility(BRU)——大批量重命名实用程序 博主要给博客网站搞博客封面,几百张图没编号,一弄这个就好了,亲测十分好用,下面的b站教程更是一绝,快快使用起来 文章目录 Bulk Rename Ut…

鸿蒙生态开发

鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙(OpenHarmony)构建的分布式操作系统生态,旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务,覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…

Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测

基本介绍 适用于matlab2020及以上。可任意选择置信区间,区间覆盖率picp、区间平均宽度百分比等等,可用于预测不确定性,效果如图所示,采用KDE,4种分布进行预测,有对比,可以替换成自己的数据。 …

C语言【文件操作】详解中(会使用fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite函数)

引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前,希望您先仔细看一下这篇博文,理解一下文件指针和流的概念:C语言【文件操作】详解上-CSDN博客文章浏览阅读606次,点赞26次,收藏4次。先整体认识一下文件是…

深入剖析Java虚拟机(JVM):从零开始掌握Java核心引擎

📌 引言:为什么每个Java开发者都要懂JVM? 想象你是一名赛车手,Java是你的赛车,而JVM就是赛车的引擎。 虽然你可以不关心引擎内部构造就能开车,但要想在比赛中获胜,必须了解引擎如何工作&#…

鸿蒙harmonyOS笔记:练习CheckBoxGroup获取选中的值

除了视觉效果实现全选和反选以外,咱们经常需要获取选中的值,接下来看看如何实现。 核心步骤: 1. 给 CheckBoxGroup 注册 onChange。 2. CheckBox 添加 name 属性。 3. 在 onChange 的回调函数中获取 选中的 name 属性。 事件&#xff1a…

通俗易懂搞懂@RequestParam 和 @RequestBody

📌 博主简介: 💻 努力学习的 23 级科班生一枚 🚀🏠 博主主页 : 📎 灰阳阳📚 往期回顾 :Session和Cookie我不允许你不懂💬 每日一言: 「流水不争先&#xff0c…

Flink 内存管理

一、内存模型 上图是一个 Flink 程序进程总体的内存模型,其包含 Flink 使用内存、JVM 元空间以及 JVM 开销。 Flink 使用了堆上内存和堆外内存;框架内存使用了堆上内存和堆外内存的直接内存;Task 使用堆上内存和堆外内存的直接内存;管理内存、JVM 元空间以及 JVM 内存开销使…

【工具变量】中国各地级市是否属于“信息惠民国家试点城市”匹配数据(2010-2024年)

数据来源:国家等12部门联合发布的《关于加快实施信息惠民工程有关工作的通知》 数据说明:内含原始文件和匹配结果,当试点城市在2014年及以后,赋值为1;试点城市在2014年之前或该城市从未实施信息惠民试点工程&#x…

git的底层原理

git的底层原理 三段话总结git, 1. 工作原理:git管理是一个DAG有向无环图,HEAD指针指向branch或直接指向commit,branch指向commit,commit指向tree,tree指向别的tree或直接指向blob。 2. git所管理的一个目录…

安装React开发者工具

我们在说组件之前,需要先安装一下React官方推出的开发者工具,首先我们分享在线安装方式 首先打开谷歌网上应用商店(针对谷歌浏览器),在输入框内搜索react,安装如下插件: 注意安装提供方为Facebook的插件,这…

排列与二进制

#include<iostream> using namespace std; int count_two(int n,int m){int count0;for(int i0;i<m;i){ //统计2的因子个数 int numn-i;while(num%20){count;num /2;}}return count; } int main(){int n,m;while(1){cin >> n >> m;if(n0 && m0)br…

鱼书--学习2

6. 与学习相关的技巧 6.1 参数的更新 &#xff08;1&#xff09; SGD的缺点&#xff1a;SGD低效的根本原因是&#xff0c;梯度的方向并没有指向最小值的方向 基于SGD的最优化的更新路径&#xff1a;呈“之”字形朝最小值(0, 0)移动&#xff0c;效率低 &#xff08;2&#x…

基于SSM框架的汽车租赁平台(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;汽车租赁平台当然不能排除在外。汽车租赁平台是在实际应用和软件工程的开发原理之上&#xff0c;运用Java语言以及SSM框架进行开发&#x…

LangChain Chat Model学习笔记

Prompt templates: Few shot、Example selector 一、Few shot(少量示例) 创建少量示例的格式化程序 创建一个简单的提示模板&#xff0c;用于在生成时向模型提供示例输入和输出。向LLM提供少量这样的示例被称为少量示例&#xff0c;这是一种简单但强大的指导生成的方式&…

新配置了一台服务器+域名共178:整个安装步骤,恢复服务

买了一台服务器域名eesou.com&#xff1a; 服务器选的是99元最低配的&#xff0c;用免费的镜像&#xff1a;宝塔面板 eesou.com是一口价买的 79&#xff0c;原来wjsou.com卖了。 原来的配置全丢了。开始重新安装步骤。 域名备案才能用&#xff0c;提交就等着了 服务器配置 …

Netty——BIO、NIO 与 Netty

文章目录 1. 介绍1.1 BIO1.1.1 概念1.1.2 工作原理1.1.3 优缺点 1.2 NIO1.2.1 概念1.2.2 工作原理1.2.3 优缺点 1.3 Netty1.3.1 概念1.3.2 工作原理1.3.3 优点 2. Netty 与 Java NIO 的区别2.1 抽象层次2.2 API 易用性2.3 性能优化2.4 功能扩展性2.5 线程模型2.6 适用场景 3. 总…