Nginx使用篇

server/2024/10/20 20:38:57/

文章目录

  • 1. 负载均衡
  • 2. 限流
  • 3. 动静分离
  • 总结

Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛用于负载均衡、限流和动静分离等场景。以下是这些功能的具体实现和配置方法。

1. 负载均衡

Nginx 可以通过反向代理实现负载均衡,将客户端请求分发到多个后端服务器上,以提高系统的可用性和性能。

配置示例:

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

负载均衡策略:

  • 轮询(默认):按顺序将请求分发到每个服务器。
  • 权重(weight):根据服务器权重进行分发。
  • IP 哈希(ip_hash):根据客户端 IP 地址分发请求,同一个 IP 的请求总是分配到同一个后端服务器。
  • 最少连接(least_conn):将请求分发到当前活动连接最少的服务器。

示例:

upstream backend {server backend1.example.com weight=3;server backend2.example.com;server backend3.example.com;
}upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;server backend3.example.com;
}upstream backend {least_conn;server backend1.example.com;server backend2.example.com;server backend3.example.com;
}

2. 限流

Nginx 可以通过限流模块(ngx_http_limit_req_module)来限制客户端请求的速率,从而保护服务器免受过载攻击。

配置示例:

http {limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;server {listen 80;location / {limit_req zone=mylimit burst=20 nodelay;proxy_pass http://backend;}}
}

参数说明:

  • limit_req_zone:定义限流区域,其中 $binary_remote_addr 是客户端 IP 地址,mylimit 是区域名称,10m 是共享内存大小,rate=10r/s 表示每秒最多处理 10 个请求。
  • limit_req:应用限流区域,burst=20 允许的突发请求数, nodelay 表示超过限速的请求立即返回错误而不是排队。

3. 动静分离

动静分离是指将动态请求和静态请求分开处理,以提高网站的性能。静态资源(如图片、CSS、JS 文件)可以直接由 Nginx 处理,动态请求(如 PHP、Python、Java 等)则代理到后端应用服务器。

配置示例:

server {listen 80;location / {proxy_pass http://backend;}location ~* \.(jpg|jpeg|png|gif|css|js|ico|html)$ {root /var/www/static;expires 30d;}
}

参数说明:

  • location /:匹配所有请求,并将其代理到后端服务器。
  • *location ~ .(jpg|jpeg|png|gif|css|js|ico|html)$**:匹配静态资源文件,并直接由 Nginx 处理。root 指定静态资源的根目录,expires 设置浏览器缓存过期时间。

总结

Nginx 作为一个高性能的反向代理服务器,能够通过负载均衡、限流和动静分离等功能,显著提高网站的性能和可靠性。其配置灵活且高效,适用于各种规模的 web 应用。

  • 负载均衡:通过反向代理和多种负载均衡策略,将请求分发到多个后端服务器。
  • 限流:通过限流模块限制客户端请求速率,保护服务器免受过载攻击。
  • 动静分离:将静态资源和动态请求分开处理,提高网站性能。

掌握这些配置和原理,可以有效优化 Nginx 的使用,提升 web 应用的整体表现。


http://www.ppmy.cn/server/90206.html

相关文章

本地生活抽佣系统搭建:如何让系统具有竞争优势?

随着本地生活的潜力不断展现,本地生活服务商逐渐成为新兴职业中的一大热门,本地生活抽佣系统搭建的热度也一直保持着飙升的状态。 抖音生活发布的《2023年数据报告》显示,2023年,抖音生活服务平台总交易额增长256%,抖…

docker产生日志过大优化

1、Docker容器启动后日志存放位置 #cat /var/lib/docker/containers/容器ID/容器ID-json.log #echo >/var/lib/docker/containers/容器ID/容器ID-json.log临时清除日志 注:echo一个空进去,不需要重启容器,但如果你直接删除这个日志&…

乐鑫ESP32-H2设备联网芯片,集成多种安全功能方案,启明云端乐鑫代理商

在数字化浪潮的推动下,物联网正以前所未有的速度融入我们的日常生活。然而,随着设备的激增,安全问题也日益成为公众关注的焦点。 乐鑫ESP32-H2致力于为所有开发者提供高性价比的安全解决方案,这款芯片经过专门设计以集成多种安全…

Microsoft 365 Office BusinessPro LTSC 2024 for Mac( 微软Office办公套件)

Microsoft 365 Office BusinessPro LTSC 2024是一款专为商业用户设计的办公软件套件,它集成了Word、Excel、PowerPoint等核心应用,并特别包含了Microsoft Teams这一强大的协作工具。Teams将聊天、会议、文件共享、任务管理等功能整合到一个平台上&#x…

《InheriBT行为树》For Unity

InheriBT: Unity Editor中的行为树编辑框架 行为树(Behavior Tree)是一种广泛应用于人工智能(AI)领域的决策模型,特别是在游戏开发中。行为树通过分层结构和节点的组合,实现了复杂行为的简洁表达。然而&am…

无人机上磁航技术详解

磁航技术,也被称为地磁导航,是一种利用地球磁场信息来实现导航的技术。在无人机领域,磁航技术主要用于辅助惯性导航系统(INS)进行航向角的测量与校正,提高无人机的飞行稳定性和准确性。其技术原理是&#x…

Spark+实例解读

第一部分 Spark入门 学习教程:Spark 教程 | Spark 教程 Spark 集成了许多大数据工具,例如 Spark 可以处理任何 Hadoop 数据源,也能在 Hadoop 集群上执行。大数据业内有个共识认为,Spark 只是Hadoop MapReduce 的扩展&#xff08…

elasticsearch 解决全模糊匹配最佳实践

事件背景: 某 CRM 系统,定义了如下两个表: 客户表 t_custom 字段名 类型 描述 idlong自增主键phonestring客户手机......... 客户产品关系表 t_custom_product 字段名 类型 描述 idlong自增主键custom_idlong客户idproduct_idlong产品…