Nginx -Web服务器/反向代理/负载均衡

news2024/9/21 11:05:35

文章目录

  • 一、web服务
    • 1.1 nginx安装
    • 1.2 配置文件
    • 1.3 Nginx处理Web机制
  • 二、反向代理
  • 三、负载均衡
    • 3.1 分类
    • 3.2 负载相关配置文件
    • 3.3 keepalive 提高吞吐量
    • 3.4 配置浏览器缓存
  • 附、JMeter性能测试工具


以赛促学内容,大概率感觉会使用nginx做web服务,特对nginx做总结归纳.

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。
官网:http://nginx.org/ https://github.com/nginx/nginx.org
在这里插入图片描述

一、web服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
高可用 keepalived
在这里插入图片描述在这里插入图片描述

1.1 nginx安装

# 查询
nginx -v #安装版本
dnf search  nginx
#安装
dnf install nginx -y
# 查找配置文件
rpm -qa |grep nginx
rpm -qa |grep nginx
rpm -qc nginx-1.20.1-10.el9.x86_64
vim /etc/nginx/nginx.conf
#验证配置文件,也显示位置
nginx -t 
......
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
......
#启动
systemctl enable --now nginx.service
systemctl status nginx.service
ss -ntlp |grep 80

安装验证
在这里插入图片描述

在这里插入图片描述

1.2 配置文件

在这里插入图片描述

#备份配置文件
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
#重新配置文件
touch nginx.conf
vim nginx.conf
.........
# events 块用于配置连接处理的设置。它通常位于 http 块之外,
#但也可以放在 server 或 location 块内。不写会报错.
events {
}

http {
        server {
                listen 80;  #端口
                server_name localhost; #IP 域名
                root /usr/share/nginx/lih;# 根目录 不写则默认/usr/share/nginx/html;
                index haha.html;# 首页 不写则默认index
        }
}
.........
nginx -s reload # 重新加载配置文件,-s 发送命令.Nginx 会尝试平滑地重启工作进程.
nginx -t #用于检查 Nginx 配置文件的语法是否正确

配置中http-server中的location有更复杂的配置。可有正在表达式~

#无参数是匹配root/app中的index文件
    location /app {
               root /usr/share/nginx/lih;
       }
#~正则表达式,制访问6-9的文件,可将root路径提出。
 	root /var/www/localhost;
	location ~ /files/file[6-9].file{           
            }
# 307 重新定向 访问temp自动到/app/haha.html
    root /var/www/localhost;          
    location /temp{
        return 307 /app/haha.html;
                }
# 精确匹配
              
    location =/temp{
      root /var/www/localhost;
                }

在这里插入图片描述

  # 增加不同的服务端口89
  server {
	  listen 89;
	  server_name localhost;
	  #默认#root /usr/share/nginx/html下的index.html
	  location /app {
	  	root /usr/share/nginx/lih2;
	  	# index默认是app里的index.html
	  }
  }
  # 增加不同的服务端口90
  server {
	  listen 90;
	  server_name localhost;
	  
	  location /views {
		  root /opt/RuoYi-Vue/ruoyi-ui/src;#程序文件
		  index index.vue;# vue的文件架构还需研究下
	  }
	#和上面效果一样 使用alias别名,隐去路径。
    location /static {
        alias /opt/RuoYi-Vue/ruoyi-ui/src/views;
    index index.vue;
    }

  }

1.3 Nginx处理Web机制

在这里插入图片描述
异步,多路复用。
在这里插入图片描述
配置文件中的events 块用于配置连接处理的设置。案例如下:

events {
    worker_connections 1024; # 默认每个工作进程允许的最大并发连接数
    multi_accept on;         # 允许多个连接同时被接受
    use epoll;               # 默认使用 epoll 事件模型
}
# epoll是Linux下的一种I/O复用技术,主要用于提高高并发服务器程序的性能。如图相对于传统事件处理,减少了进程。

在这里插入图片描述
在这里插入图片描述

#ss:专门用于显示套接字统计信息,包括TCP和UDP套接字的状态、端口号、连接状态等。
#优势在于可以更快地显示大量套接字连接的信息。
ss -ntlp |grep 80
#ps:提供进程的静态信息,包括进程ID (PID)、CPU和内存使用情况、状态、启动时间等。
#支持多种输出格式,如较详细的长格式(-l选项)或完整格式(-f选项)。
ps -ef |grep nginx

在这里插入图片描述

二、反向代理

在这里插入图片描述

server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass http://tomcats;# 需和upstream的名字一样
    }
}
# 配置上游服务器
upstream tomcats {   
        server localhost:89;     
}

三、负载均衡

3.1 分类

在这里插入图片描述

负载均衡是一种优化手段,用于在多个服务器之间均匀地分配工作负载,从而提高系统整体的性能和可靠性
载体维度分类硬件负载均衡:这种方案通常使用专用的硬件设备,如F5和A10,具有高性能和全面的功能,但成本较高且扩展性有限。
软件负载均衡:通过在标准服务器上运行的软件实现,例如Nginx、HAProxy和LVS。这些软件负载均衡器具有部署简单、成本低、灵活性高等优点。
网络通信分类 四层负载均衡:基于传输层的IP地址和端口进行请求转发,性能较好,通常用于处理大量网络流量。
七层负载均衡:基于应用层信息(如URL、HTTP头部等)进行决策,可以提供更细粒度的控制,常用于需要更智能路由的场景

在这里插入图片描述
类比
在这里插入图片描述

3.2 负载相关配置文件

http {
    # 反向代理服务
    server {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass http://tomcats;# 需和upstream的名字一样
        }
    }
    # 配置上游服务器
    upstream tomcats {   
            server localhost:89;
            server localhost:90;
            # ip_hash;#hash #hash算法分配,即每个ip机器对应固定
            # least_conn; #最少连接
            #hash $request_uri;#hash根据url算法
            #server localhost:89 weight =1;#默认为1
            #server localhost:90 weight= 5;
    }
    # 89端口服务
    server {
        listen 89;
        server_name localhost;
        root /usr/share/nginx/lih2;#更换根路径
        #index index.html;
    }
    #90端口服务
    server {
        listen 90;
        server_name localhost;
        #index index.html; 不写使用默认根路径和默认主文件
    }
}

分别显示89,90轮询服务,默认为weight=1平均轮询。
在这里插入图片描述
在这里插入图片描述

#nginx 做负载均衡的案例
    server {
        listen 80;  #端口
        server_name localhost; #IP 域名

        location / {
                proxy_pass http://proxy;
        }
    }

    # 两个服务端口
    upstream proxy{
        server localhost:802;
        server localhost:803;
    }
   # 不要再加httpserver服务端口重复了
   # server {
   #    listen 802;
   #    server_name localhost;
   # }

   #server {
   #   listen 803;
   #  server_name localhost;
    #}
# 配置上游服务器
upstream tomcats {
        server localhost:89 weight =1;#默认为1
        server localhost:90 down;
        server localhost:91 backup;
        server localhost:92 fail_timeout=10#默认10s
}

在这里插入图片描述

3.3 keepalive 提高吞吐量

upstream tomcats {
        server localhost:90 ;
        keepalive 32;#32个线程,不用反复消失创建
}

server {
    listen 80;
    server_name localhost;
    location / {
            proxy_pass http://tomcats;
            proxy_http_version 1.1;# keepalive相关,具体各位自行研究
            proxy_set_header Connection "";# keepalive相关,具体各位自行研究
    }
}

JMeter测试吞吐量为2倍
在这里插入图片描述在这里插入图片描述

3.4 配置浏览器缓存

# 各自有空去研究吧
proxy_cache_path  /...

在这里插入图片描述

附、JMeter性能测试工具

Meter是一种可以在不同协议或技术上执行负载测试,面向性能的业务(功能)测试,回归测试等的软件
官网:https://jmeter.apache.org/
教程文档参考:
https://blog.csdn.net/yaorongke/article/details/82799609
https://iowiki.com/jmeter/jmeter_quick_guide.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI in Finance 金融领域AI应用-基于DeepNLP AI App Store 真实用户评论打分和排名

AI在金融领域应用 AI in Finance 金融服务领域的AI应用和传统的金融智能应用不同。传统金融智能应用包括如风险评估 (Risk assessment), 风险管理(Risk management), 欺诈检测 (Fraud Detection)等等。 通用AI大模型和人工智能应用如ChatGPT&#xff0c…

PyTorch复现PointNet——模型训练+可视化测试显示

因为项目涉及到3D点云项目,故学习下PointNet这个用来处理点云的神经网络 论文的话,大致都看了下,网络结构有了一定的了解,本博文主要为了下载调试PointNet网络源码,训练和测试调通而已。 我是在Anaconda下创建一个新的…

香蕉派BPI-Wifi6迷你路由器公开发售

Banana Pi BPI-Wifi6 Mini 公开发售。 Banana Pi BPI-Wifi6 Mini 开源路由器采用Triductor TR6560 TR5220 wifi SOC设计,是一款迷你尺寸的wifi6路由器解决方案。内置高性能双核ARM Cortec A9处理器用于WIFI报文转发或智能业务处理,内置高性能LSW和硬件N…

最新浪子授权系统网站源码 全开源免授权版本

最新浪子授权系统网站源码 全开源免授权版本 此版本没有任何授权我已经去除授权,随意二开无任何加密。 更新日志 1.修复不能下载 2.修复不能更新 3.修复不能删除用户 4.修复不能删除授权 5.增加代理后台管理 6.重写授权读取文件 7.修复已经知道漏洞 源码下…

pytorch-RNN实战-正弦曲线预测

目录 1. 正弦数据生成2. 构建网络3. 训练4. 预测5. 完整代码6. 结果展示 1. 正弦数据生成 曲线如下图: 代码如下图: 50个点构成一个正弦曲线随机生成一个0~3之间的一个值(随机的原因是防止每次都从相同的点开始,50个点的正弦曲…

云手机批量操作使用场景,从Amazon、TK等软件分析

云手机目前所具备的群控,批量操作,自动化等功能,对于电商,软测,办公,直播,营销等行业有很好的减负作用。 针对于具体的海外APP,云手机具体可以做哪些事情来帮助我们减轻压力&#x…

Docker拉取失败,利用github将镜像推送到阿里云

GITHUB配置 fork https://github.com/tech-shrimp/docker_image_pusher 该项目到自己的账户下。 设置环境变量,其路径如下图 在该项目中 .github/workflows/docker.yaml 找到 env 标签 ALIYUN_REGISTRY: "${{ secrets.ALIYUN_REGISTRY }}"ALIYUN_NAME_S…

AC修炼计划(AtCoder Regular Contest 180) A~C

A - ABA and BAB A - ABA and BAB (atcoder.jp) 这道题我一开始想复杂了,一直在想怎么dp,没注意到其实是个很简单的规律题。 我们可以发现我们住需要统计一下类似ABABA这样不同字母相互交替的所有子段的长度,而每个字段的的情况有&#xff…

600Kg大载重起飞重量多旋翼无人机技术详解

600Kg大载重起飞重量的多旋翼无人机是一种高性能的无人驾驶旋翼飞行器,具有出色的载重能力和稳定的飞行特性。该无人机采用先进的飞行控制系统和高效的动力系统,能够满足各种复杂任务的需求,广泛应用于物资运输、应急救援、森林防火等领域。 …

西门子大手笔又买一家公司,2024年“两买”和“两卖”的背后……

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料,请到智能制造online知识星球自行下载。 今年,这家全球工业巨头不仅精准出击&#xff0c…

MACOS查看硬盘读写量

一、安装Homebrew 按照提示进行安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"二、安装smartmontools brew install smartmontools三、查看硬盘读写量等信息 sudo smartctl -a /dev/disk0

Python8:线程和进程

1.并发和并行 并发:在逻辑上具备同时处理多个任务的能力(其实每时刻只有一个任务) 并行:物理上在同一时刻执行多个并发任务 2.线程与进程 一个进程管多个线程,一个进程至少有一个线程 python多线程是假的&#xf…

UML-各种图

什么是类图 定义系统中的类,描述类的内部结构(属性、方法等),表示类之间的关系(泛化、实现、依赖、关联、聚合、组合)。 UML表示类图 上图中左侧图形是一个常见的类图, 类名:在顶…

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局: 1.1QVBoxLayout介绍: 1.2 属性介绍: 1.3细节理解: 二、QHBoxLayout-水平布局: 三、QGridLayout-网格布局: 3.1QGridLayout介绍: 3.2常用方法&#xff1a…

iMazing 3.0.3.1Mac中文破解版下载安装激活

今天,小编要分享的是Mac下一款可以帮助用户管理IOS设备的软件——iMazing,之前,小编也分享的过类似的软件,iMazing却有独特之处。小子这次带来的是3.0.3.1版本。 iMazing 3是一款iOS设备管理软件,该软件支持对基于iOS…

【STM32学习】cubemx配置,串口的使用,串口发送接收函数使用,以及串口重定义、使用printf发送

1、串口的基本配置 选择USART1,选择异步通信,设置波特率 选择后,会在右边点亮串口 串口引脚是用来与其他设备通信的,如在程序中打印发送信息,电脑上打开串口助手,就会收到信息。 串口的发送接收&#xff0…

机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!...

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Ubuntu 24.04 安装 NVIDIA Container Toolkit 什么是 NVIDIA Container Toolkit? 描述:NVIDIA Container Toolkit(容器工具包)使用户能够构建和运行 GPU 加速的容器,该工具包括一个容器运行时库和实用程序,用于自动…

新能源汽车充电站远程监控系统S275钡铼技术无线RTU

新能源汽车充电站的远程监控系统在现代城市基础设施中扮演着至关重要的角色,而钡铼技术的S275无线RTU作为一款先进的物联网数据监测采集控制短信报警终端,为充电站的安全运行和高效管理提供了强大的技术支持。 技术特点和功能 钡铼S275采用了基于UCOSI…

【PTA天梯赛】L1-006 连续因子(20分)

作者:指针不指南吗 专栏:算法刷题 🐾或许会很慢,但是不可以停下来🐾 文章目录 题目题解题意步骤 总结 题目 题目链接 题解 题意 求解n的最长连续因子 和因子再相乘的积无关,真给绕进去了 步骤 双重循…

D-走一个大整数迷宫(牛客月赛97)

题意:给两个n行m列的矩阵a和b,计数器,只有当计数器的值模(p-1)时出口才打开,要从左上走到右下,求最快多久走出迷宫。 分析:无论2的bij次方有多大p的2的bij次方的次方取模&#xff0…