当前位置: 首页 > news >正文

在Linux系统中无网络安装Nginx并配置负载均衡

在Linux系统中无网络安装Nginx并配置负载均衡

在现代的Web开发和运维中,Nginx作为一个高性能的HTTP和反向代理服务器,被广泛应用于负载均衡、静态资源服务、SSL终端等场景。然而,在某些特殊环境下,服务器可能无法访问互联网,这就需要在无网络的情况下手动安装和配置Nginx。本文将详细介绍如何在Linux系统中无网络安装Nginx,并通过Nginx实现负载均衡。

1. 环境准备

在开始安装之前,我们需要确保系统已经安装了必要的编译工具和依赖库。以下是具体的步骤:

1.1 检查并安装GCC编译器

GCC是GNU编译器集合,用于编译C、C++等语言的程序。Nginx的安装需要GCC的支持。我们可以通过以下命令检查系统是否已经安装了GCC:

gcc -v

如果系统未安装GCC,我们需要手动安装。假设我们已经下载了GCC的源码包(gcc.tar.gz),可以通过以下步骤进行安装:

tar -zxvf gcc.tar.gz
cd gcc
sudo rpm -Uvh *.rpm --nodeps --force

安装完成后,再次使用gcc -v命令验证GCC是否安装成功。

1.2 安装Nginx的依赖库

Nginx依赖于一些第三方库,包括PCRE(正则表达式库)、zlib(压缩库)和OpenSSL(安全通信库)。我们需要手动下载这些库的源码包并进行编译安装。

1.2.1 解压依赖库

假设我们已经下载了以下依赖库的源码包:

  • pcre-8.45.tar.gz
  • zlib-1.2.13.tar.gz
  • openssl-1.1.1v.tar.gz

我们可以通过以下命令解压这些源码包:

tar -zxvf pcre-8.45.tar.gz
tar -zxvf zlib-1.2.13.tar.gz
tar -zxvf openssl-1.1.1v.tar.gz
1.2.2 编译安装PCRE

进入PCRE源码目录并编译安装:

cd pcre-8.45
sudo ./configure
sudo make
sudo make install
cd ..
1.2.3 编译安装zlib

进入zlib源码目录并编译安装:

cd zlib-1.2.13
sudo ./configure
sudo make
sudo make install
cd ..
1.2.4 编译安装OpenSSL

进入OpenSSL源码目录并编译安装:

cd openssl-1.1.1v
sudo ./config
sudo make
sudo make install
cd ..

2. 编译并安装Nginx

在安装完所有依赖库后,我们可以开始编译和安装Nginx。

2.1 解压Nginx源码包

假设我们已经下载了Nginx的源码包(nginx-1.24.0.tar.gz),可以通过以下命令解压:

tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

2.2 配置Nginx

在编译Nginx之前,我们需要配置Nginx的编译选项,指定依赖库的路径:

sudo ./configure --prefix=/usr/local/nginx \--with-pcre=/path/to/pcre-8.45 \--with-zlib=/path/to/zlib-1.2.13 \--with-openssl=/path/to/openssl-1.1.1v

其中,/path/to/需要替换为实际的依赖库路径。

2.3 编译并安装Nginx

配置完成后,我们可以开始编译和安装Nginx:

sudo make
sudo make install

2.4 启动Nginx

安装完成后,可以通过以下命令启动Nginx:

sudo /usr/local/nginx/sbin/nginx

3. 配置Nginx实现负载均衡

假设我们已经在两台服务器上部署了Flask服务,现在需要通过Nginx实现负载均衡,将请求分发到这两个Flask服务。

3.1 配置Nginx进行负载均衡

打开Nginx的配置文件/usr/local/nginx/conf/nginx.conf,在http块中添加负载均衡配置:

http {upstream flask_servers {server 192.168.1.101:5000;  # 第一个Flask服务器的IP和端口server 192.168.1.102:5000;  # 第二个Flask服务器的IP和端口}server {listen 80;server_name your_domain_or_IP;location / {proxy_pass http://flask_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
}

3.2 解释配置

  • upstream flask_servers:定义了负载均衡池,将两个Flask服务器的IP地址和端口添加到其中。
  • proxy_pass:设置将请求转发到上面定义的负载均衡池flask_servers
  • proxy_set_header:用于保留客户端的真实IP和请求头信息。

3.3 负载均衡策略

默认情况下,Nginx会使用轮询策略(Round-Robin)进行负载均衡。如果需要其他策略,可以在upstream块中指定,比如least_conn(最少连接):

upstream flask_servers {least_conn;server 192.168.1.101:5000;server 192.168.1.102:5000;
}

3.4 测试并重新加载Nginx

保存配置文件后,使用以下命令测试Nginx配置是否正确:

/usr/local/nginx/sbin/nginx -t

如果测试通过,重新加载Nginx:

/usr/local/nginx/sbin/nginx -s reload

3.5 验证

访问服务器的IP或域名,Nginx将会自动将请求负载均衡到两个Flask服务器。

4. 总结

通过本文的步骤,我们成功在无网络的环境中安装了Nginx,并配置了负载均衡功能。虽然无网络环境下的安装过程相对复杂,但通过手动编译和配置,我们依然能够搭建起一个高性能的Web服务器。希望本文能够帮助到需要在无网络环境下部署Nginx的开发者。

如果你在安装过程中遇到任何问题,欢迎在评论区留言,我会尽力为你解答。

相关文章:

在Linux系统中无网络安装Nginx并配置负载均衡

在Linux系统中无网络安装Nginx并配置负载均衡 在现代的Web开发和运维中,Nginx作为一个高性能的HTTP和反向代理服务器,被广泛应用于负载均衡、静态资源服务、SSL终端等场景。然而,在某些特殊环境下,服务器可能无法访问互联网&…...

Android车机DIY开发之软件篇(三)编译Automotive OS错误(1)

Android车机DIY开发之软件篇(三)编译Automotive OS错误(1) 问题 FAILED: out/soong/build.ninja cd “KaTeX parse error: Expected EOF, got & at position 49: …soong_build")" &̲& BUILDER"PWD/KaTeX parse error: Expected EOF, got & …...

基于网络爬虫技术的网络新闻分析【源码+文档+部署讲解】

目 录 1 绪论 1.1 论文研究背景与意义 1.2 论文研究内容 2 系统需求分析 2.1 系统需求概述 2.2 系统需求分析 2.2.1 系统功能要求 2.2.2 系统IPO图 2.2 系统非功能性需求分析 3系统概要设计 3.1 设计约束 3.1.1需求约束 3.1.2设计策略 3.1.3 技术实现 3.3 模块…...

uniapp区域滚动——上划进行分页加载数据(详细教程)

##标题 用来总结和学习,便于自己查找 文章目录 一、为什么scroll-view?          1.1 区域滚动页面滚动?          1.2 代码? 二、分页功能?          2.1 如何实现&#xff…...

机器学习(1):线性回归概念

1 线性回归基础 1.1 什么是线性 例如:汽车每小时60KM,3小时可以行使多长距离?已知汽车的速度,则汽车的行使距离只与时间唯一相关。在二元的直角坐标系中,描出这一关系的图是一条直线,所以称为线性关系。 线…...

关于编写测试用例的细枝末节

这里写目录标题 故障判别类-边界考虑示例1.0:若A>20.3且持续时间≥15ms时(判故周期为1000Hz),输出B为1,否则输出B为0。 故障判别类-不可恢复测试示例1.1:若A>20.3且持续时间≥15ms时…...

《计算机网络》课后探研题书面报告_了解PPPoE协议

PPPoE协议的工作原理与应用分析 摘 要 PPPoE(Point-to-Point Protocol over Ethernet)是一种广泛应用于宽带接入的网络协议,特别是在DSL(数字用户线路)和光纤网络中具有重要的应用价值。PPPoE结合了PPP协议的认证、加…...

Linux Centos 安装Jenkins到服务

一、前言 假设你已经下载了jenkins.war 安装了对应的jdk,下面我们来安装jenkins,以服务的形式安装。 二、安装 1)将jenkins.war拷贝到合适的位置,我的位置 /u01/jenkins/ ,位置你自己选。 2)创建系统用户…...

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one(青柠学术插件)的时候,使用插件跳转obsidian中的对应笔记,出现上图情况。(错误中提到的…...

基于考研概率论知识解读 Transformer:为何自注意力机制要除以根号 dk

Transformer自注意力机制中除以 d k \sqrt{d_k} dk​ ​深度剖析 【 Transformer 系列,故事从 d k \sqrt{d_k} dk​ ​说起】 LLM这么火,Transformer厥功甚伟,某天心血来潮~,再去看看! 它长这个样子: 深入…...

网络安全学习81天(记录)

前言: 小迪安全,81天,开始了php代码审计 思路: 内容: #知识点: 1、审计漏洞-SQL 数据库注入挖掘 1、审计思路-正则搜索&功能追踪&辅助工具 3、审计类型-常规架构&MVC 架构&三方框架 #章…...

MATLAB学习笔记-table

1.在table中叠加table table 的每一列具有固定的数据类型。如果要让表的所有单元格都可以任意填充,就得让每一列都是 cell 类型,这样表中每个单元格都是“一个元胞”。创建时可以先构造一个 空 cell 数组(大小为行数列数)&#x…...

mybatisPlus(条件构造器API)

文章目录 目录一、mybatisPlus的介绍二、mybatisPlus的基础使用配置BaseMapper的基本CURD(增删改查) 三、wrapper(条件构造器)条件构造器(wrapper)通用API基础条件判断:进阶条件判断&#xff08…...

5G+工业互联网迈入规模化发展新阶段

百度安全验证 https://blog.csdn.net/qq_25467441/article/details/145036191?sharetypeblogdetail&sharerId145036191&sharereferPC&sharesourceqq_25467441&spm1011.2480.3001.8118 好看视频-轻松有收获 产业供给加速提升。国内主流模组厂商引领全球5G模组…...

【CI/CD构建】关于不小心将springMVC注解写在service层

背景 之前写一个接口的时候没有察觉到将RequestBody这个注解带到service层了。 今天提交代码的时候,插件没有检测到这个低级错误,导致试飞构建连maven编译都过不了,maven找不到程序包org.springframework.web.bind.annotation这个包 结果…...

《鸿蒙Next ArkTS:开启人工智能应用开发高效新旅程》

在当今科技飞速发展的时代,人工智能与鸿蒙Next的结合正成为开发者们关注的焦点。利用鸿蒙Next的ArkTS语言开发高效的人工智能驱动的应用程序,为我们带来了前所未有的机遇和创新空间。 了解ArkTS语言与鸿蒙Next ArkTS是一种基于TypeScript的静态类型脚本…...

Unity 3D游戏开发从入门进阶到高级

本文精心整理了Unity3D游戏开发相关的学习资料,涵盖入门、进阶、性能优化、面试和书籍等多个维度,旨在为Unity开发者提供全方位、高含金量的学习指南.欢迎收藏。 学习社区 Unity3D开发者 这是一个专注于Unity引擎的开发者社区,汇聚了众多Un…...

什么是SSH登录?SSH客户端软件有哪些?

一、SSH解释 SSH(Secure Shell)登录是一种用于计算机之间加密登录的网络协议。SSH登录允许用户通过互联网访问、控制和修改远程服务器。它提供了加密的通信通道,以保护敏感数据的机密性和完整性。SSH协议支持多种应用,包括SSH&…...

Ubuntu服务器提示:检测到存在恶意文件,补救思路

1. 确定文件类型 可以使用file命令来检查该文件的类型,这有助于判断它是否真的是一个恶意文件 file /path/to/the/file 2. 检查文件内容 使用strings命令查看文件内容,看是否有可疑的命令或脚本: strings /path/to/the/file 3. 扫描系统…...

【学习计算机视觉算法的基础及基本编码-基于Python语言--实例教程】

Python视觉算法实际从0-1实例编码 一、学习基础二、学习计算机视觉基础知识三、深度学习在计算机视觉中的应用四、实例项目五、实践与拓展 一、学习基础 数学基础 线性代数: 学习矩阵、向量的基本概念,包括矩阵的加法、乘法、转置等运算。理解矩阵的秩、…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...