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

Nginx在微服务架构项目(Spring Cloud)中的强大作用

文章目录

  • 一、Nginx是什么?
  • 二、Nginx在微服务架构(Spring Cloud)项目中的作用
    • 1.前端静态资源托管
    • 2.反向代理后端 API
    • 3.负载均衡
    • 4.SSL 证书与 HTTPS 支持
    • 5.缓存与压缩优化
    • 6.安全防护
    • 7.灰度发布与流量控制
    • 8.跨域处理(CORS)
    • 9.客户端请求体和内存缓冲区
  • 三、总结


一、Nginx是什么?

Nginx官网

Nginx 是一款开源的高性能 ​Web 服务器 和 ​反向代理服务器,广泛用于现代互联网架构中。其核心特点包括:

​高并发处理:采用事件驱动的异步架构,单机可轻松支持数万并发连接,资源消耗极低,尤其适合高流量场景。
​反向代理与负载均衡:作为流量入口,Nginx 将请求分发至多个后端服务,提升系统可用性和扩展性,支持轮询、加权、IP哈希等策略。
​静态资源托管:高效处理静态文件(如HTML、CSS、图片),减少后端应用服务器压力,加速内容传输。
​SSL/TLS终端:统一管理HTTPS加密,卸载后端服务的SSL计算负担,简化证书配置。
​缓存与压缩:通过内容缓存和Gzip压缩优化响应速度,降低带宽消耗。
​安全防护:提供IP黑名单、速率限制、请求过滤等功能,抵御DDoS攻击和恶意访问。

Nginx 以其轻量、灵活和高稳定性成为微服务、云原生及大规模网站的核心组件,常与Apache配合(Nginx处理静态和代理,Apache运行动态内容),或直接作为独立服务网关,显著提升系统性能和可维护性。

二、Nginx在微服务架构(Spring Cloud)项目中的作用

1.前端静态资源托管

直接托管前端(例:Vue3) 编译后的静态文件(HTML/CSS/JS/图片等),减轻后端服务压力。

server {listen       80;server_name  your-domain.com;# 托管前端静态资源location / {root   /usr/share/nginx/html;index  index.html;try_files $uri $uri/ /index.html; # 支持Vue路由的History模式}
}

2.反向代理后端 API

将前端请求的 API 路径(如 /api/**)代理到 Spring Cloud Gateway 或微服务集群。

server {listen       80;server_name  your-domain.com;# 代理API请求到Spring Cloud Gatewaylocation /api {proxy_pass http://spring-cloud-gateway:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

3.负载均衡

将流量分发到多个 Spring Cloud Gateway 实例,提升高可用性。

upstream gateway-cluster {server gateway-node1:8080 weight=5; # 权重负载均衡server gateway-node2:8080;server gateway-node3:8080 backup;    # 备用节点
}server {location /api {proxy_pass http://gateway-cluster;}
}

4.SSL 证书与 HTTPS 支持

统一管理 SSL 证书,处理 HTTPS 加密解密,简化后端服务的 HTTPS 配置。

server {listen       443 ssl;server_name  your-domain.com;ssl_certificate     /etc/nginx/ssl/your-domain.com.crt;ssl_certificate_key /etc/nginx/ssl/your-domain.com.key;# 代理API请求location /api {proxy_pass http://gateway-cluster;}
}

5.缓存与压缩优化

缓存 API 响应、压缩静态资源,减少网络传输耗时。

# 启用Gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;# 缓存静态资源
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {expires 365d; # 缓存一年add_header Cache-Control "public";
}

6.安全防护

防御 DDoS、限制 IP 访问、过滤恶意请求。

# 限制单个IP的并发连接数
limit_conn_zone $binary_remote_addr zone=perip:10m;server {location /api {limit_conn perip 10; # 每个IP最多10个并发连接proxy_pass http://gateway-cluster;}
}

7.灰度发布与流量控制

通过权重分流实现灰度发布(如 10% 流量到新版本)。

upstream gateway-cluster {server gateway-v1:8080 weight=90; # 90%流量到旧版本server gateway-v2:8080 weight=10; # 10%流量到新版本
}

8.跨域处理(CORS)

统一处理跨域请求,避免前端单独配置。

server {location /api {add_header 'Access-Control-Allow-Origin' $http_origin;add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE';add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';proxy_pass http://gateway-cluster;}
}

9.客户端请求体和内存缓冲区

client_max_body_size:定义客户端请求体的最大允许大小(例如上传文件、表单提交的数据、大批量的文件导入数据等)。
client_body_buffer_size:定义用于缓存客户端请求体的内存缓冲区大小,减少磁盘IO。

server {client_max_body_size 30m; # 全局最大请求体 30MBclient_body_buffer_size 128k;   # 缓冲区 128KB
}

三、总结

将nginx的一些常用作用进行整理,这些配置想必各位同学基本都有使用和接触过,可能灰度发布与流量控制这块使用的少点。

http://www.xdnf.cn/news/42949.html

相关文章:

  • 【智驾中的大模型 -3】VLA 在自动驾驶中的应用
  • 运维侠职场日记9:用DeepSeek三天通关详解自动化操作pdf批量提取PDF文字将PDF转Word文档(附上脚本代码)
  • SpringBoot实战3
  • jupyter切换存储路径
  • FFmpeg:M3U8的AES加密
  • Mac-VScode-C++环境配置
  • 如何在 Go 中创建和部署 AWS Lambda 函数
  • 【linux基本工具的使用 yum vim gdb 以及makefile自动化构建项目】
  • 学习笔记十九——Rust多态
  • MFC文件-写MP4
  • Python打包程序为exe文件(py2exe)
  • AES (高级加密标准)
  • (mac)Grafana监控系统之监控Linux的Redis
  • 基于Matlab求解矩阵电容等效容值
  • 解决vscode找不到Python自定义模块,报错No module named ‘xxx‘
  • MySQL数据库(基础篇)
  • Gitlab runner 安装和注册
  • 解决模拟器打开小红书设备异常问题
  • n8n 中文系列教程_04.半开放节点深度解析:Code与HTTP Request高阶用法指南
  • 2025年渗透测试面试题总结-拷打题库08(题目+回答)
  • Docker Compose 外部网络(`external: true`)与内部网络的区别
  • 【AI图像创作变现】02工具推荐与差异化对比
  • 用于手部康复设备的TinyML语音分类嵌入式人工智能模块
  • 大模型day4 - LangChain
  • Jsp技术入门指南【九】详细讲解JSTL
  • Linux 文件系统目录结构详解
  • UID和GID的区别
  • optool为macho文件增加动态库
  • React+TS编写轮播图
  • FreeSWITCH 简单图形化界面41 - 批量SIP视频呼叫测试