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

NGINX相关的知识点

NGINX 是一个高性能的 HTTP 和反向代理服务器,广泛用于负载均衡、反向代理、缓存等场景。以下是关于 NGINX 负载均衡相关的知识点:

1. 负载均衡的基本概念

  • 负载均衡:将客户端请求分发到多个后端服务器上,以提高系统的可用性、可靠性和性能。
  • 反向代理:NGINX 作为反向代理服务器,接收客户端请求并将其转发给后端服务器,后端服务器处理完请求后再通过 NGINX 返回给客户端。

2. 负载均衡的工作模式

NGINX 支持多种负载均衡策略,常用的有以下几种:

  • 轮询(Round Robin):默认的负载均衡策略,按照顺序依次将请求分配给后端服务器。

    upstream backend {
        server 192.168.1.101;
        server 192.168.1.102;
    }
    
  • 加权轮询(Weighted Round Robin):可以根据服务器的性能为每个服务器分配不同的权重,权重越高,分配的请求越多。

    upstream backend {
        server 192.168.1.101 weight=3;
        server 192.168.1.102 weight=1;
    }
    
  • IP 哈希(IP Hash):根据客户端的 IP 地址进行哈希运算,确保同一个客户端的请求总是被分配到同一台后端服务器。这种方式可以实现会话保持(Session Persistence)。

    upstream backend {
        ip_hash;
        server 192.168.1.101;
        server 192.168.1.102;
    }
    
  • 最少连接(Least Connections):将请求分配给当前连接数最少的服务器,适用于处理时间较长的请求。

    upstream backend {
        least_conn;
        server 192.168.1.101;
        server 192.168.1.102;
    }
    

3. 健康检查

NGINX 可以通过被动健康检查来检测后端服务器的状态。如果某个服务器返回错误或超时,NGINX 会暂时停止向该服务器发送请求,直到它恢复正常。

  • max_fails:定义在指定时间内允许的最大失败次数,默认是 1 次。
  • fail_timeout:定义失败的时间窗口和暂停服务的时间,默认是 10 秒。
    upstream backend {
        server 192.168.1.101 max_fails=3 fail_timeout=30s;
        server 192.168.1.102 max_fails=3 fail_timeout=30s;
    }
    

4. 会话保持(Session Persistence)

在某些场景下,客户端的请求需要始终路由到同一台后端服务器,例如用户登录后的会话信息存储在某台服务器上。可以通过以下方式实现会话保持:

  • IP Hash:如前所述,基于客户端 IP 地址的哈希值来实现会话保持。
  • Cookie:通过设置 Cookie 来实现会话保持,NGINX Plus 提供了更高级的会话保持功能。

5. SSL/TLS 终止

NGINX 可以作为 SSL/TLS 终止点,负责解密 HTTPS 请求并将解密后的请求转发给后端服务器。这样可以减轻后端服务器的加密/解密负担。

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

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

6. 缓存

NGINX 可以缓存后端服务器的响应,减少对后端服务器的压力,提高响应速度。

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

server {
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend;
    }
}

7. 限流

NGINX 可以通过限流机制来控制请求速率,防止后端服务器过载。

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

server {
    location / {
        limit_req zone=mylimit burst=20 nodelay;
        proxy_pass http://backend;
    }
}

8. 高可用性

NGINX 本身可以通过主备模式或集群模式实现高可用性。常见的方案包括:

  • Keepalived:通过 VRRP 协议实现 NGINX 的主备切换。
  • DNS 轮询:通过 DNS 轮询的方式实现多台 NGINX 实例的负载均衡。

9. 日志与监控

  • 访问日志:记录每个请求的详细信息,便于分析和排查问题。
    access_log /var/log/nginx/access.log;
    
  • 错误日志:记录 NGINX 运行过程中出现的错误信息。
    error_log /var/log/nginx/error.log;
    
  • 监控工具:可以使用 Prometheus、Grafana 等工具对 NGINX 的性能进行监控。

10. 动态配置

NGINX Plus 提供了动态配置的功能,支持通过 API 动态添加、删除或修改后端服务器,而无需重启 NGINX 服务。

11. WebSocket 支持

NGINX 支持 WebSocket 协议的负载均衡,可以通过 proxy_http_versionproxy_set_header 配置来支持 WebSocket。

location /ws/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
}

12. HTTP/2 支持

NGINX 支持 HTTP/2 协议,能够提高页面加载速度,特别是在传输大量小文件时。

server {
    listen 443 ssl http2;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

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

总结

NGINX 的负载均衡功能非常强大,支持多种负载均衡策略、健康检查、会话保持、SSL/TLS 终止等功能。通过合理配置,可以显著提高系统的性能和可靠性。

相关文章:

  • TUSB422 MCU 软件用户指南
  • Java LinkedList(单列集合)
  • 解决 paddle ocr 遇到 CXXABI_1.3.13 not found 的问题
  • 【设计模式】【行为型模式】迭代器模式(Iterator)
  • python卷积神经网络人脸识别示例实现详解
  • 如何避免大语言模型中涉及丢番图方程的问题
  • STM32 I2C通信协议说明
  • 微信小程序自定义tabbar,跳转tabbar后页面加载路径不正确
  • 机械学习基础-5.分类-数据建模与机械智能课程自留
  • kotlin标准库里面也有很多java类
  • PySide(PyQT)使用场景(QGraphicsScene)进行动态标注的一个demo
  • 鸿蒙HarmonyOS NEXT开发:横竖屏切换开发实践
  • Golang 进阶训练营
  • 小白零基础如何搭建CNN
  • 构建Python量化交易环境:从基础安装到项目创建
  • 微服务SpringCloud Alibaba组件nacos教程(一)【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】
  • Python:凯撒密码
  • SQLite 数据库:优点、语法与快速入门指南
  • 快速上手Vim的使用
  • java每日精进 2.13 Ganache(区块链本地私有化部署)
  • 吉林做网站找谁/百度关键词怎么优化
  • 网站建设与管理单招/肇庆seo外包公司
  • 厦门软件网站建设/国际新闻最新消息今天
  • 用r语言 做网站点击热力图/网络seo优化公司
  • web是做网站的吗/免费b2b平台推广
  • 今日澄海新闻/seo排名优化seo