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

nginx-http反向代理与负载均衡

简单的HTTP反向代理

nginx默认集成了代理模块,因此可以直接在server域配置proxy_pass实现反向代理。

假设nginx服务器的IP为192.168.0.10,后端服务器

server {listen 80;location / {proxy_pass http://192.168.0.11:8000;}
}

负载均衡

负载均衡需要在upstream域配置,示例:

http {# ...upstream backend {server 192.168.0.11:80 weight=80;server 192.168.0.12:80;server 192.168.0.13:80 backup;}server {location / {proxy_pass http://backend;}}
}

后端服务器指令参数

  • weight: 权重,默认为1。示例: weight=80
  • max_fails: 最大失败数,默认为1。示例: max_fails=3。被代理服务器在fail_timeout规定时间内的最大请求失败数,超过设定次数后,被代理服务器便被认为不可用。
  • fail_timeout: 失败超时,默认为10s。示例:fail_timeout=15s。被代理服务器被置为不可用的最长时间。
  • backup: 备份服务器。将被代理服务器标记为备份服务器,当其他非备份服务器不可用时,会把请求转发给备份服务器。
  • down: 无效服务器。将被代理服务器标记为无效服务器。
  • max_conn: 最大连接数,默认为0,表示没限制。示例:max_conn=100。与被代理服务器建立活动连接的最大数量。

负载均衡策略

默认负载均衡策略为轮询,通过权重配置可实现加权轮询。

  • hash:哈希策略。(暂时还没试过咋用)
  • ip_hash:确保同一个客户端的请求总会被同一个被代理服务器处理。
  • least_conn:最少连接策略。在考虑被代理服务器组权重的前提下,将客户端请求分配给拥有最少活跃连接数的被代理服务器。
  • random:随机负载策略。将客户端请求随机分配给被代理服务器。

负载均衡长连接

默认配置下,HTTP协议的负载均衡与被代理服务器之间的连接都是HTTP/1.0的短连接。如果使用长连接,可以在一个TCP连接中传输多个HTTP请求和响应,减少了建立和关闭TCP连接的消耗和延迟,提高了传输效率。

配置示例:

upstream backend {server 192.168.0.11:80;server 192.168.0.12:80;# 长连接缓存池大小为32keepalive 32;# 每条长连接最大复用请求数为2000keepalive_requests 2000;
}
server {location/ {proxy_pass http://backend;# 启用http/1.1版本与被代理服务器建立连接proxy_http_version 1.1;# 清空请求头属性字段Connection的内容proxy_set_header Connection "";}
}

反向代理简单优化

http {proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;tcp_nodelay off;server {listen 8081;location / {proxy_pass http://192.168.67.232:80/;# 启用响应数据缓冲区proxy_buffering on;# 设置每个HTTP请求读取上游服务器响应数据缓冲区的大小为64KBproxy_buffers 8 8k;# 设置每个HTTP请求读取响应数据第一部分缓冲区的大小为8KBproxy_buffer_size 8k;# 接收上游服务器返回响应数据时,同时用于向客户端发送响应的缓冲区的大小为16KBproxy_busy_buffers_size 16k;# 不限制每个HTTP请求每秒读取上游服务器响应数据的流量proxy_limit_rate 0;# 启用客户端HTTP请求读取缓冲区功能proxy_request_buffering on;# 设置发送给上游服务器的头属性字段Host为客户端请求头字段Host的值proxy_set_header Host $host:$server_port;# 设置发送给上游服务器的头属性字段X-Real-IP为客户端IPproxy_set_header X-Real-IP $remote_addr;# 设置用于缓存的共享内存proxy_cache STATIC;# 设置200响应码的缓存时间为1天proxy_cache_valid 200 1d;# 出现指定条件时,使用已经过期的缓存响应proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;}}
}
http://www.dtcms.com/a/285357.html

相关文章:

  • 大规模图计算引擎的分区与通信优化:负载均衡与网络延迟的解决方案
  • Nginx配置Spring Boot集群:负载均衡+静态资源分离实战
  • 百度权重提升技巧分析:从底层逻辑到实战策略
  • x86上编译jetson nano的docker
  • 【Docker】在Linux环境下使用Dockerfile打包镜像(图文示例)
  • Spring中的设计模式
  • 因果图方法设计测试用例的价值与使用范围
  • untiy之导入插件(文件方式,适用于git克隆失败)
  • TCP通讯开发注意事项及常见问题解析
  • MTSC2025参会感悟:手工测试用例的智能化生成
  • Typecho+阿里云CDN完整配置:防止DDoS攻击与IP暴露
  • 6 种无线传输照片从安卓到 Mac 的方法
  • CertiK创始人顾荣辉出席上海Conflux大会,聚焦Web3全球化中的安全与合规路径
  • grpo 优化
  • 超简单linux上部署Apache
  • 力扣 hot100 Day48
  • [源力觉醒 创作者计划]_文心一言 4.5开源深度解析:性能狂飙 + 中文专精
  • 力扣刷题Day 79:跳跃游戏 II(45)
  • 算法-排序算法
  • Docker报错:No address associated with hostname
  • vue3+vite 使用scss、sass 全局定义的变量以及使用
  • 荷兰KIPP ZONEN CMP4 太阳辐射传感器耐热仪器设计高温日射计一种辐射计
  • 前端项目利用Gitlab CI/CD流水线自动化打包、部署云服务
  • 基于单片机电机转速检测测速报警设计
  • STM32之L298N电机驱动模块
  • CSS样式中的布局、字体、响应式布局
  • FastCAE—Flow流体软件网格划分模块功能介绍(多区域网格划分)
  • 如何区别HTML和HTML5?
  • C++进阶-红黑树(难度较高)
  • Java学习第五十三部分——后端常用函数