news 2026/5/13 9:50:48

Nginx 高级配置:负载均衡、限流、缓存、SSL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx 高级配置:负载均衡、限流、缓存、SSL

Nginx 高级配置:负载均衡、限流、缓存、SSL

| 负载均衡、限流、缓存、SSL 优化。


负载均衡

基础配置

upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; server 192.168.1.12:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

负载均衡策略

upstream backend { # 轮询(默认) server 192.168.1.10:8080; server 192.168.1.11:8080; # 权重 server 192.168.1.10:8080 weight=3; server 192.168.1.11:8080 weight=1; # IP 哈希(同一 IP 固定到同一台) ip_hash; server 192.168.1.10:8080; server 192.168.1.11:8080; # 最少连接 least_conn; server 192.168.1.10:8080; server 192.168.1.11:8080; }

健康检查

upstream backend { server 192.168.1.10:8080 max_fails=3 fail_timeout=30s; server 192.168.1.11:8080 max_fails=3 fail_timeout=30s; }
  • max_fails:失败多少次标记为不可用
  • fail_timeout:不可用后多久再尝试

限流

基础限流

http { # 定义限流区域 limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s; server { listen 80; server_name example.com; location / { limit_req zone=mylimit burst=20 nodelay; proxy_pass http://backend; } } }

参数说明:

参数含义
zone=mylimit:10m区域名和大小(10M 能存 16 万 IP)
rate=10r/s每秒 10 个请求
burst=20允许突发 20 个请求
nodelay不延迟处理,直接拒绝

按路径限流

location /api/ { limit_req zone=mylimit burst=10; proxy_pass http://backend; } location /static/ { # 静态资源不限流 proxy_pass http://backend; }

限制连接数

http { limit_conn_zone $binary_remote_addr zone=connlimit:10m; server { location / { limit_conn connlimit 10; proxy_pass http://backend; } } }

限制带宽

location /download/ { limit_rate 1m; # 每秒 1MB proxy_pass http://backend; }

缓存

代理缓存

http { # 定义缓存路径 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m max_size=1g inactive=60m; server { location / { proxy_cache mycache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_pass http://backend; } } }

参数说明:

参数含义
levels=1:2缓存目录层级
keys_zone=mycache:10m缓存区域名和大小
max_size=1g最大缓存大小
inactive=60m60 分钟没访问就删除
proxy_cache_valid不同状态码的缓存时间

静态资源缓存

location ~* \.(jpg|jpeg|png|gif|css|js|svg|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; }

禁止缓存

location /api/ { add_header Cache-Control "no-cache, no-store, must-revalidate"; proxy_pass http://backend; }

SSL 优化

基础配置

server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://backend; } }

SSL 会话缓存

ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;

OCSP Stapling

ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

HTTP 自动跳转 HTTPS

server { listen 80; server_name example.com; return 301 https://$host$request_uri; }

其他高级配置

压缩

gzip on; gzip_vary on; gzip_min_length 1024; gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

超时设置

proxy_connect_timeout 10s; proxy_send_timeout 60s; proxy_read_timeout 300s;

日志格式

log_format detailed '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' 'rt=$request_time upstream=$upstream_response_time'; access_log /var/log/nginx/access.log detailed;

隐藏版本号

server_tokens off;

常见问题

负载均衡不均衡

# 检查后端服务状态curlhttp://192.168.1.10:8080/healthcurlhttp://192.168.1.11:8080/health# 检查 Nginx 日志tail-f/var/log/nginx/access.log

限流不生效

# 检查限流状态curlhttp://localhost/api/status

缓存不生效

# 检查缓存目录ls-la/var/cache/nginx/# 检查缓存日志tail-f/var/log/nginx/cache.log

SSL 证书过期

# 检查证书过期时间openssl x509-in/etc/letsencrypt/live/example.com/cert.pem-noout-dates# 自动续期certbot renew

总结

功能配置
负载均衡upstream+proxy_pass
限流limit_req_zone+limit_req
缓存proxy_cache_path+proxy_cache
SSLssl_certificate+ssl_protocols
压缩gzip on
超时proxy_*_timeout

记住:配置改完要nginx -t检查语法,systemctl reload nginx重载

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 9:49:11

保姆级教程:用TensorFlow 2.0从零复现YOLOv5(附完整代码与数据集处理)

从零构建YOLOv5目标检测系统:TensorFlow 2.0实战指南 在计算机视觉领域,目标检测技术正以前所未有的速度重塑着行业应用边界。从自动驾驶的实时障碍物识别到工业质检中的缺陷定位,高效精准的目标检测算法已成为智能视觉系统的核心引擎。本文将…

作者头像 李华
网站建设 2026/5/13 9:40:08

3步搞定Unity游戏翻译:XUnity.AutoTranslator新手完全指南

3步搞定Unity游戏翻译:XUnity.AutoTranslator新手完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的语言障碍烦恼吗?XUnity.AutoTranslator作为最强大的Uni…

作者头像 李华
网站建设 2026/5/13 9:36:03

ChuanhuChatGPT:开源增强型ChatGPT Web界面部署与功能详解

1. 项目概述:一个为ChatGPT打造的现代化Web界面如果你已经深度使用过ChatGPT的官方网页版,可能会和我有同样的感受:功能强大,但界面交互上总觉得少了点什么。比如,对话管理不够直观,想要回溯某次特定的聊天…

作者头像 李华
网站建设 2026/5/13 9:30:37

基于OpenAI API与社交平台集成的智能聊天机器人构建指南

1. 项目概述:一个整合社交与AI的自动化工具箱最近在GitHub上看到一个挺有意思的项目,叫“Whatsapp_Instagram_Messanger_ChatGPT_OpenAI”。光看这个标题,你大概就能猜到它的野心不小——它试图把WhatsApp、Instagram、Messenger这几个主流社…

作者头像 李华
网站建设 2026/5/13 9:28:02

MediaCreationTool.bat:革命性的Windows自动化部署解决方案

MediaCreationTool.bat:革命性的Windows自动化部署解决方案 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …

作者头像 李华