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

Nginx如何实现反向代理和负载均衡器等功能的

一、反向代理(Reverse Proxy)
📖 概念

正向代理:客户端 → 代理 → 目标服务器(如 VPN、科学上网代理)。

反向代理:客户端 → Nginx(代理) → 多个后端服务器(客户端不知道后端的真实地址)。

Nginx 就是常用的反向代理工具。

📂 配置示例

server {listen 80;  # 监听80端口server_name mysite.com;  # 域名location / {proxy_pass http://127.0.0.1:3000;  # 把请求转发到本地3000端口(Node.js)# 可选:保持用户IP,解决跨域问题proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

👉 这样,访问 http://mysite.com/ 时,实际上是 Nginx 把请求转发给 http://127.0.0.1:3000。
常用于:前后端分离项目(前端 Vue/React 静态页面在 Nginx,API 请求转发到后端服务)。

二、负载均衡(Load Balancing)

当有多个后端服务时,Nginx 可以把流量分配给不同服务器,提高并发能力和可靠性。

📂 配置示例

http {upstream backend_servers {server 127.0.0.1:3000;   # 服务1server 127.0.0.1:3001;   # 服务2server 127.0.0.1:3002;   # 服务3}server {listen 80;server_name mysite.com;location / {proxy_pass http://backend_servers;  # 转发到上面定义的服务器组}}
}

⚖️ 负载均衡策略

Nginx 内置了几种负载均衡方式:

轮询(默认)

按顺序把请求依次分发到不同服务器。

权重(weight)

可以给服务器配置不同权重,比如:

upstream backend_servers {server 127.0.0.1:3000 weight=3;server 127.0.0.1:3001 weight=1;
}

👉 这样 3000 端口的流量是 3001 的 3 倍。

IP Hash

同一用户(IP)固定访问同一台服务器,常用于需要保持 会话状态 的场景。

upstream backend_servers {ip_hash;server 127.0.0.1:3000;server 127.0.0.1:3001;
}

最少连接(least_conn)

把请求分配给当前连接数最少的服务器(Nginx 1.3 以后支持)。

三、结合缓存和 HTTPS

缓存静态资源

location /static/ {
root /var/www/html;
expires 30d; # 缓存30天
}

配置 HTTPS + 反向代理

server {listen 443 ssl;server_name mysite.com;ssl_certificate /etc/nginx/ssl/mysite.crt;ssl_certificate_key /etc/nginx/ssl/mysite.key;location / {proxy_pass http://backend_servers;}
}

📊 总结

反向代理:隐藏后端真实地址,请求先到 Nginx,再转发给后端。

负载均衡:当有多个后端时,Nginx 把请求按策略分发,提高性能和稳定性。

缓存 + HTTPS:进一步提升性能和安全性。

http://www.dtcms.com/a/351419.html

相关文章:

  • 要闻集锦|阿里官网调整为四大业务板块;华为云重组多个事业部涉及上千人;群核科技在港交所更新招股书
  • Swift高阶函数-contains、allSatisfy、reversed、lexicographicallyPrecedes
  • 【大前端】实现一个前端埋点SDK,并封装成NPM包
  • 如何避免频繁切换npm源
  • Redis相关命令详解及其原理
  • AI在提升阅读效率的同时,如何加强理解深度?
  • 嵌入式(day34) http协议
  • 使用Java对接印度股票市场API开发指南
  • Markdown学习笔记(4)
  • 计算神经科学数学建模编程深度前沿方向研究(上)
  • 新手向:pip安装指南
  • 《数据之心》——鱼小妖的觉醒(科研篇)
  • DAY 57 经典时序预测模型1
  • 如何在PC上轻松访问iPhone照片(已解决)
  • UE5 PCG 笔记(三) Normal To Density 节点
  • 神经网络参数量计算详解
  • linux服务器监控平台搭建流程
  • 深度学习:卷积神经网络(CNN)
  • [Mysql数据库] 知识点总结2
  • 高教杯数学建模2021-C 生产企业原材料的订购与运输
  • 将vmware workstation虚拟机迁移至pve
  • 基础|Golang内存分配
  • 游戏手柄是怎么做的?| 赛卓电子Semiment
  • 基于规模化HIL测试集群的CICD方案
  • 以教学标准为纲:健康管理实训室设备清单的价值挖掘与实践路径
  • Barba.js 完全使用指南
  • Mac安装docker,启动elasticsearch
  • 04 网络信息内容安全--入侵检测技术
  • UNIX网络编程笔记:高级套接字编程20-25
  • Excel怎么换行?3种单元格内换行方法?【图文详解】Excel自动换行?Alt+Enter?