Nginx编译安装以及负载均衡配置(Ubuntu 22.04)

目录

Nginx编译安装以及负载均衡配置

Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1

1.安装依赖包

2. 下载nginx

3. 编译安装

报错解决

解决问题2

4.安装

5启动Nginx:

负载均衡

负载均衡算法

轮询

加权负载均衡

ip_hash算法

算法进行配置演示

加权负载均衡

轮询

IP 哈希


Nginx编译安装以及负载均衡配置

Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1

1.安装依赖包

sudo apt install libgd-dev

2. 下载nginx

wget http://nginx.org/download/nginx-1.22.1.tar.gz 
.解压nginx
tar -zvxf nginx-1.22.1.tar.gz

3. 编译安装

cd nginx-1.22.1
编译并指定安装位置,执行安装之后会创建指定文件夹/www/env/nginx
./configure --prefix=/www/env/nginx \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_image_filter_module \
--with-http_slice_module \
--with-mail \
--with-threads \
--with-file-aio \
--with-stream \
--with-mail_ssl_module \
--with-stream_ssl_module

报错解决

在Linux系统上,构建和编译软件通常需要C编译器。此错误可能是由于在您的系统上没有安装C编译器或者C编译器未正确设置所引起的。
要解决此问题,您可以尝试安装C编译器。在大多数Linux发行版中,常用的C编译器是GCC。以下是一些安装GCC编译器的常用命令,您可以在终端上执行:
对于Ubuntu系统:
sudo apt-get update
sudo apt-get install build-essential

解决问题2

./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre= option. PCRE库
PCRE库支持正则表达式。如果我们在配置文件nginx.conf中使用了正则表达式,那么在编译Nginx时就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块需要靠它来解析正则表达式。另外,pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的。可以这样安装:
sudo apt update
sudo apt install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
这样成功了

4.安装

make && make install
安装完成在/www/env/nginx 看到下面文件
conf/ - 这个目录包含Nginx的配置文件,用于配置服务器的行为,包括虚拟主机配置、代理设置等。
html/ - 这个目录通常包含Nginx服务器的网页文件,也就是网站的内容文件,比如HTML、CSS、JavaScript文件等。
logs/ - 这个目录包含Nginx服务器的日志文件,记录了服务器的活动、访问日志、错误日志等。
sbin/ - 这个目录包含Nginx服务器的可执行文件,是服务器的主要执行文件,用于启动、停止、重载服务器等操作。

5启动Nginx:

sbin/nginx
nginx常用命令 常用命令 nginx -s reload 修改配置后重新加载生效 nginx -s stop 快速停止nginx nginx -s start 启动nginx nginx -s quit 完整有序的停止nginx nginx -v 查看nginx的版本 nginx -V 查看版本和nginx的配置选项 nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确 nginx -s reopen 重新打开日志文件
启动访问ubntu的IP地址 看是否有下面页面

负载均衡

什么是负载均衡?
以看到负载均衡的主要作用是采用了负载均衡算法将请求分发到集群模式中的应用服务器上,这样即使某个后台应用服务器挂了,其他应用服务器还可以正常接收请求,实现了高可用,并且集群模式模式下的应用服务器支持纵向扩展,可以应对业务快速增长带来的高并发应用场景

负载均衡算法

负载均衡算法常用的有

轮询

原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数 max_fails 1次 ),则在失效时间 fail_timeout 10秒 )内不会再转发请求到该节点

加权负载均衡

原理是每一个请求按权重被分发到不同的应用服务器,同样,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(默认1次或可设置N次),则在失效时间fail_timeout(默认10秒,可设置N秒)内,不会再转发请求到该节点

ip_hash算法

原理是每一个请求按用户访问IP的哈希结果分配,如果请求来自同一个用户IP则固定这台IP访问一台应用服务器,该算法可以有效解决动态网页中存在的session共享问题。

算法进行配置演示

Nginx所在ip:192.168.20.144
负载1:192.168.56.1 小皮站点
负载2:192.168.75.128暗月靶场
负载1
负载2

加权负载均衡

vim /etc/nginx/nginx.conf
upstream nginx_boot {
        server 192.168.56.1 max_fails=2 fail_timeout=30s;
        server 192.168.75.128 max_fails=2 fail_timeout=30s;
    }
    ##
    # Server Configuration
    ##
    server {
        listen 80;
        server_name 192.168.20.144;
        location / {
            root html;
            index index.html index.htm index.jsp index.ftl;
            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_pass http://nginx_boot;
        }
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css) {
            root /usr/local/nginx/html/static;
            expires 7d;
        }
    }
}
nginx  -s reload  :修改配置后重新加载生效
然后我们就可以在浏览器中再次访问192.168.20.144
这里是使用的 权重 的方式来实现的,均设置为100,每次刷新都会换另外一个设备响应,在实际应用中是可以根据服务器的性能和流量大小来更加灵活的设置权重

轮询

upstream nginx_boot{
# 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2   
server 192.168.56.1  max_fails=2 fail_timeout=30s;
server 192.168.75.128  max_fails=2 fail_timeout=30s;
# 这里的IP请配置成你WEB服务所在的机器IP
}
server {
        listen  80;
        server_name 192.168.20.144;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 请求交给名为nginx_boot的upstream上        
                proxy_pass http://nginx_boot;
}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}
重启
访问192.168.20.144后会这样分被将流量分到了两个设备个一次,这也就是轮询
还是两次访问,分被将流量分到了两个设备。

IP 哈希

upstream nginx_boot{
ip_hash;
# 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2   
server 192.168.56.211 weight=100 max_fails=2 fail_timeout=30s;
server 192.168.75.128 weight=100 max_fails=2 fail_timeout=30s;
# 这里的IP请配置成你WEB服务所在的机器IP
}
server {
        listen  80;
        server_name 192.168.20.144;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 请求交给名为nginx_boot的upstream上        
                proxy_pass http://nginx_boot;
}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}
对每个请求,针对 ip 进行 hash, 分配到后台节点, 同一 ip 会被固定分配到下游固定服务上。
这样我们无论刷新页面多少次,响应的始终都是192.168.75.128

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何提高记忆力?

许多学员经常问我:为什么您的记忆力那么好?有没有什么方法,可以提高记忆力? 今天,我想好好聊聊这个问题。 当然,学习和记忆,是一个巨大的话题。这篇文章只是一个初探。希望能帮你打开一些视野&a…

IPoE技术汇总

在国内并没有遇到这么多的IPoE(IP over Ethernet)技术,可能也是因为我来日本多年了,没有接触国内的IPv4 over IPv6的技术,感觉国内IPv4地址紧张,用的传统NAT和PPPoE非常多,大多数设备还是建立在…

好物周刊#38:在线图片处理

https://github.com/cunyu1943/JavaPark https://yuque.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. AiEditor 一个面向 AI 的下一代富文本编辑器,她基于 Web C…

8通液体水位检测IC/液位检测芯片/抗干扰水位检测VK36W8I SOP16/QFN16L FAE支持

产品型号:VK36W8I 产品品牌:永嘉微电/VINKA 封装形式:SOP16/QFN16L 工程服务,技术支持! 概述 VK36W8I具有8个触摸检测通道,可用来检测8个点的水位。该芯片具有较高的集成度,仅需极少的外部组…

2024 高级前端面试题之 CSS 「精选篇」

该内容主要整理关于 CSS 的相关面试题,其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 CSS模块精选篇 1. 盒模型2. BFC3. 层叠上下文4. 居中布局5. 选择器权重计算方式6. 清除浮动7. link 与 import 的区别8. CSS3的新特性9. CSS动画和过渡10. 有哪些…

目录操作(实现ls -i的功能(加一个文件类型))

1》打开目录 opendir #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 形参&#xff1a;name&#xff1a;要打开的目录的路径/名字 返回值&#xff1a;成功DIR *类型的目录流指针 失败&#xff1a;返回NULL 2》关闭目录 closedir #…

万界星空科技可视化数据大屏的作用

随着科技的不断发展和进步&#xff0c;当前各种数据化的设备也是如同雨后春笋般冒了出来&#xff0c;并且其可以说是给我们带来了极大的便利的。在这其中&#xff0c;数据大屏就是非常具有代表性的一个例子。 数据大屏的主要作用包括&#xff1a; 数据分析&#xff1a;数据大屏…

一些反序列化总结

1 反序列化漏洞原理 如果反序列化的内容就是那串字符串&#xff0c;是用户可以控制的&#xff08;即变量的值&#xff09;&#xff0c;且后台不正当的使用了PHP中的魔法函数&#xff0c;就会导致反序列化漏洞&#xff0c;可以执行任意命令。Java 序列化指 Java 对象转换为字节序…

插入排序和希尔排序

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 插入排序基本思想&#xff1a;代码实现&#xff1b; 希尔排序基本思想&#xff1a;在这里插入图片描述多组并排优化《数据结构(C语言版)》--- 严蔚敏希…

Golang中make与new有何区别

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于go进阶系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系…

Typora 无法导出 pdf 问题的解决

目录 问题描述 解决困难 解决方法 问题描述 Windows 下&#xff0c;以前&#xff08;Windows 11&#xff09; Typora 可以顺利较快地由 .md 导出 .pdf 文件&#xff0c;此功能当然非常实用与重要。 然而&#xff0c;有一次电脑因故重装了系统&#xff08;刷机&#xff09;…

Armv8-M的TrustZone技术之SAU寄存器总结

每个SAU寄存器是32位宽。下表显示了SAU寄存器概要。 5.1 SAU_CTRL register SAU_CTRL寄存器的特征如下图和表所示&#xff1a; 5.2 SAU_TYPE register 5.3 SAU_RNR register 5.4 SAU_RBAR register 5.5 SAU_RLAR register 5.6 SAU区域配置 当SAU启用时&#xff0c;未由已启用…

Android 基础技术——RecyclerView

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 RecyclerView RecyclerView 对比 ListView 的优点 Adapter 面向的是 ViewHolder 不是 View, 可以省略 convertView.setTag 和 getTag 这些步骤可以设置布局管理器&#xff1a;竖向、横向、瀑布流方…

RUST笔记:candle使用基础

candle介绍 candle是huggingface开源的Rust的极简 ML 框架。 candle-矩阵乘法示例 cargo new myapp cd myapp cargo add --git https://github.com/huggingface/candle.git candle-core cargo build # 测试&#xff0c;或执行 cargo ckeckmain.rs use candle_core::{Device…

惊了!用vue开发官网,以前我觉得胡闹,现在觉得未尝不可。

以前&#xff0c;有人做好官网UI&#xff08;展示性&#xff0c;没啥功能&#xff09;&#xff0c;找我开发前端&#xff0c;说要vue来做&#xff0c;我都劝了。 基于以下四个原因&#xff1a; 1、官网毕竟还是考虑seo的&#xff0c;流量多少算多少&#xff0c;总比没有强&am…

Doris 与 Clickhouse 对比(一)

1. 常用引擎 ☕️ Doris 表数据模型 duplicate key &#x1f3ac; 场景&#xff1a;适用于数据无需提前聚合的分析业务。 ⚠️ 注意点&#xff1a;只指定排序列&#xff0c;相同的行并不会合并。 unique key &#x1f3ac; 场景&#xff1a;适用于有更新需求的业务。 ⚠…

Flink 集成 Debezium Confluent Avro ( format=debezium-avro-confluent )

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

数据结构——链式二叉树(2)

目录 &#x1f341;一、二叉树的销毁 &#x1f341;二、在二叉树中查找某个数&#xff0c;并返回该结点 &#x1f341;三、LeetCode——检查两棵二叉树是否相等 &#x1f315;&#xff08;一&#xff09;、题目链接&#xff1a;100. 相同的树 - 力扣&#xff08;LeetCode&a…

私有化部署ASR的方案,优缺点

私有化部署自动语音识别&#xff08;ASR&#xff09;系统的方案具有一些优点和缺点&#xff0c;下面苏州磐石云提出一些常见的优缺点&#xff1a; 优点&#xff1a; 数据隐私和安全性&#xff1a;私有化部署ASR系统可以确保数据在本地环境中进行处理和存储&#xff0c;更好地保…

《动手学深度学习(PyTorch版)》笔记4.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过。…