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

Nginx反向代理与负载均衡

Nginx命令


# 查看nginx版本
nginx -v
# 检查nginx配置文件语法是否正确
nginx -t
# 指定使用的配置文件
nginx -c file
# 停止
nginx -s stop 
# 安全退出
nginx -s quit
# 重新加载配置文件
nginx -s reload

代理nacos集群


upstream nacos-cluster {server 127.0.0.1:8845 weight=1;server 127.0.0.1:8846 weight=2;server 127.0.0.1:8847 weight=3;
}server {listen       80;server_name  localhost;location /nacos {proxy_pass http://nacos-cluster;}
}

配置文件


  • 全局配置选项
    worker_processes : 指定工作进程的数量,用于处理客户端请求
    error_log: 指定错误日志文件的路径和级别
    events: 设置事件模型,包括使用的事件驱动器和连接数
    http: 指定http相关的配置选项
  • http配置选项
    server: 配置虚拟主机,指定监听的IP地址和端口号
    location: 配置请求匹配规则和处理方式
    proxy_pass: 配置反向代理,将请求转发到指定的后端服务器
    root: 指定静态文件的根目录
    index: 指定默认的索引文件
    try_files: 指定查找文件的规则

location指令


  • 精确匹配: 使用=前缀,例如location = /about,只匹配精确路径为/about的请求。
location = /about {  # 处理/about请求的配置  
}
  • 前缀匹配: 默认情况下,location配置是前缀匹配,例如location /path,匹配以/path开头的请求。如果有多个前缀匹配,Nginx会按照配置中的顺序进行匹配,并使用第一个匹配成功的location。
location /static {  # 处理以/static开头的请求  
}
  • 正则匹配: 使用~前缀,例如location ~ \.php$,匹配以.php结尾的请求。还可以使用~*前缀进行不区分大小写的正则匹配。如果有多个正则匹配,Nginx会按照正则表达式的顺序进行匹配,并使用第一个匹配成功的location。
location ~ \.php$ {  # 处理以.php结尾的请求  
}
  • 最长前缀匹配: 使用^~前缀,例如location ^~ /path,匹配以/path开头的请求,并停止匹配其他location配置。这可以用于避免正则匹配的复杂性和性能开销,同时确保某些路径具有更高的优先级。
location ^~ /images/ {  # 处理以/images/开头的请求,并停止匹配其他location  
}

负载均衡规则


  • 轮询 (默认)
	upstream nacos {server 127.0.0.1:8845 ;server 127.0.0.1:8846 ;server 127.0.0.1:8847 ;}
  • weight

weight 代表权重, 默认为 1,权重越高被分配的客户端越多

	upstream nacos {server 127.0.0.1:8845 weight=1;server 127.0.0.1:8846 weight=2;server 127.0.0.1:8847 weight=3;}
  • ip_hash

ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

	upstream nacos {ip_hash;server 127.0.0.1:8845 ;server 127.0.0.1:8846 ;server 127.0.0.1:8847 ;}
  • fair

fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。

	upstream nacos {fair;server 127.0.0.1:8845 ;server 127.0.0.1:8846 ;server 127.0.0.1:8847 ;}
  • Least Connections

Nginx会选择当前活动连接数最少的后端服务器来处理请求。

http {  upstream backend {  least_conn;  server backend1.example.com;  server backend2.example.com;  }  server {  listen 80;  location / {  proxy_pass http://backend;  }  }  
}
  • Backup

如果所有非备份服务器都宕机或繁忙,请求将被发送到标记为backup的服务器。

http {  upstream backend {  server backend1.example.com;  server backend2.example.com backup;  }  server {  listen 80;  location / {  proxy_pass http://backend;  }  }  
}

相关文章:

  • 2023 版王道单科书勘误汇总(3.30)
  • 2024年小程序云开发CMS内容管理无法使用,无法同步内容模型到云开发数据库的解决方案,回退老版本CMS内容管理的最新方法
  • gprMax3.0随机介质建模
  • 【Web - 框架 - Vue】随笔 - 通过CDN的方式使用VUE 2.0和Element UI
  • 串及BF朴素查找算法(学习整理):
  • 【STK】手把手教你利用STK进行仿真-STK软件基础01 STK的对象组织模式
  • Spark Bloom Filter Join
  • 手把手教测试,全网内容最全有深度-jmeter-Flow Control Action
  • C#面:Application , Cookie 和 Session 会话有什么不同
  • 前端导入导出
  • docker中hyperf项目配置虚拟域名
  • electron nsis 安装包 window下任务栏无法正常固定与取消固定 Pin to taskbar
  • Git 如何上传本地的所有分支
  • 【C++通关攻略 · 基础篇】输入输出语句
  • 蓝桥杯倒计时 43天 - 前缀和,单调栈
  • 【mysql】环境安装、服务启动、密码设置
  • Angular6错误 Service: No provider for Renderer2
  • co.js - 让异步代码同步化
  • HTML5新特性总结
  • Idea+maven+scala构建包并在spark on yarn 运行
  • k个最大的数及变种小结
  • python docx文档转html页面
  • Python学习之路13-记分
  • Vue组件定义
  • yii2中session跨域名的问题
  • 安卓应用性能调试和优化经验分享
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 蓝海存储开关机注意事项总结
  • 山寨一个 Promise
  • 深度学习在携程攻略社区的应用
  • 实现简单的正则表达式引擎
  • 用简单代码看卷积组块发展
  • 在Unity中实现一个简单的消息管理器
  • HanLP分词命名实体提取详解
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • $(selector).each()和$.each()的区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)(1.13) SiK无线电高级配置(五)
  • (145)光线追踪距离场柔和阴影
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (四)Linux Shell编程——输入输出重定向
  • .htaccess配置常用技巧
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET NPOI导出Excel详解
  • .Net 知识杂记
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @31省区市高考时间表来了,祝考试成功
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @staticmethod和@classmethod的作用与区别
  • [AIGC] Redis基础命令集详细介绍