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

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

文章目录

  • 一、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.htmlroot /var/www/localhost;          location /temp{return 307 /app/haha.html;}
# 精确匹配location =/temp{root /var/www/localhost;}

在这里插入图片描述

  # 增加不同的服务端口89server {listen 89;server_name localhost;#默认#root /usr/share/nginx/html下的index.htmllocation /app {root /usr/share/nginx/lih2;# index默认是app里的index.html}}# 增加不同的服务端口90server {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;#默认为1server 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.lryc.cn/news/399654.html

相关文章:

  • 机器人三定律及伦理分析
  • 自动驾驶算法———车道检测(一)
  • 小程序自学教程
  • How do I format markdown chatgpt response in tkinter frame python?
  • vs2019 QT无法打开源文件QModbusTcpClient
  • 初识c++(命名空间,缺省参数,函数重载)
  • 印尼Facebook直播网络需要达到什么要求?
  • 力扣题解(最长回文子串)
  • 数据湖表格式 Hudi/Iceberg/DeltaLake/Paimon TPCDS 性能对比(Spark 引擎)
  • 脚本练习-每5分钟执行一次获取当前服务器的基本情况
  • 技术探索之kotlin浅谈
  • 机器学习之常用优化器
  • 机器学习基本概念,Numpy,matplotlib和张量Tensor知识进一步学习
  • 博客前端项目学习day01
  • java Collections.synchronizedCollection方法介绍
  • 力扣每日一题:3011. 判断一个数组是否可以变为有序
  • ubuntu 上vscode +cmake的debug调试配置方法
  • 使用Redis实现签到功能:Java示例解析
  • tableau标靶图,甘特图与瀑布图绘制 - 9
  • 双向链表专题
  • SpringCoud组件
  • 向量的定义和解释
  • IoTDB 集群高效管理:一键启停功能介绍
  • 一个spring boot项目的启动过程分析
  • 智驭未来:人工智能与目标检测的深度交融
  • 01MFC建立单个文件类型——画线
  • 免杀中用到的工具
  • [vite] Pre-transform error: Cannot find package pnpm路径过长导致运行报错
  • Promise总结
  • ROI 接口便捷修改