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

五十八、【Linux系统nginx服务】nginx代理服务器、nginx优化

Nginx代理技术全景图

Nginx代理
基础反向代理
负载均衡
缓存加速
安全防护
高级功能
请求转发
头部重写
连接池
轮询策略
权重分配
会话保持
静态缓存
动态缓存
边缘缓存
WAF规则
速率限制
地理封锁
WebSocket
SSL卸载
动态路由

代理类型深度对比

特性基础反向代理负载均衡缓存代理最佳适用场景
核心功能请求转发流量分配内容缓存缓存代理:高重复请求
性能影响极高负载均衡:高并发系统
配置复杂度★★☆☆☆★★★☆☆★★★★☆基础代理:简单转发
资源消耗高(内存)按需求选择
典型延迟5-50ms10-100ms1-5ms缓存代理:低延迟需求
企业应用内部服务代理应用集群CDN边缘节点根据架构层级选择

负载均衡策略详解

策略配置指令算法原理适用场景缺点
轮询默认顺序分配默认均衡不考虑服务器状态
加权轮询weight=3按权重比例异构服务器静态配置
IP哈希ip_hash客户端IP映射会话保持扩展性差
最少连接least_conn选择连接最少长连接服务计算开销
响应时间fair (第三方)最快响应优先性能敏感服务需额外模块

缓存优化技术

缓存类型存储位置缓存内容失效策略性能影响
客户端缓存用户浏览器静态资源Expires头极高
边缘缓存CDN节点静态内容TTL控制
反向代理缓存Nginx服务器动态内容Cache-Control
应用缓存内存(Redis)数据库查询LRU算法极高

一、Nginx 代理服务器配置

1. 基础反向代理

# 创建代理配置
[root@localhost ~]# vi /etc/nginx/conf.d/proxy.conf
server {listen 80;server_name proxy.localhost;location / {proxy_pass http://backend_server;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 {server 192.168.1.101:8080;server 192.168.1.102:8080;
}# 重载配置
[root@localhost ~]# nginx -t && systemctl reload nginx

2. 负载均衡策略

# 加权轮询
upstream backend {server 192.168.1.101 weight=3;  # 处理3倍流量server 192.168.1.102;
}# IP哈希保持会话
upstream backend {ip_hash;server 192.168.1.101;server 192.168.1.102;
}# 最少连接数
upstream backend {least_conn;server 192.168.1.101;server 192.168.1.102;
}

3. 缓存配置

# 代理缓存设置
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=PROXY_CACHE:10m inactive=60m;server {location / {proxy_cache PROXY_CACHE;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_cache_min_uses 1;add_header X-Cache-Status $upstream_cache_status;}
}

二、Nginx 性能优化

1. 连接优化

# 编辑主配置文件
[root@localhost ~]# vi /etc/nginx/nginx.conf
events {worker_connections 10240;  # 单worker最大连接数multi_accept on;           # 同时接受多个连接use epoll;                 # Linux高性能事件模型
}http {keepalive_timeout 30s;     # 保持连接超时keepalive_requests 100;    # 单连接最大请求数sendfile on;               # 零拷贝传输tcp_nopush on;             # 优化数据包发送tcp_nodelay on;            # 禁用Nagle算法
}

2. 压缩优化

gzip on;
gzip_min_length 1024;          # 最小压缩文件大小
gzip_comp_level 6;             # 压缩级别(1-9)
gzip_types text/plain text/css application/json application/javascript;
gzip_vary on;                  # 根据请求头启用压缩

3. 静态资源优化

location ~* \.(jpg|png|css|js)$ {expires 30d;               # 客户端缓存30天access_log off;             # 关闭访问日志add_header Cache-Control "public";open_file_cache max=1000 inactive=20s;  # 文件描述符缓存
}

4. 内核参数调优

# 编辑sysctl配置
[root@localhost ~]# vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 100000# 应用配置
[root@localhost ~]# sysctl -p

三、高级代理功能

1. WebSocket 代理

location /wsapp/ {proxy_pass http://websocket_backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_read_timeout 600s;    # 长连接超时
}

2. 动态SSL证书

# 使用Let's Encrypt自动续签
[root@localhost ~]# certbot --nginx -d domain.com# 配置自动重载
[root@localhost ~]# echo "0 0 * * * certbot renew --quiet" | crontab -

3. 地理位置路由

geo $geo {default default_backend;192.168.1.0/24 lan_backend;
}server {location / {proxy_pass http://$geo;}
}

命令总结表格

演示命令功能描述关键参数
proxy_pass http://backend反向代理配置后端服务器地址
upstream backend { ... }定义服务器组server + weight
proxy_cache_path配置代理缓存缓存路径和参数
worker_connections 10240调整并发连接数最大连接数
gzip on启用压缩减少传输体积
expires 30d静态资源缓存客户端缓存时间
sysctl -p应用内核参数系统级优化
certbot --nginx自动SSL证书免费HTTPS证书
http://www.dtcms.com/a/322709.html

相关文章:

  • MySQL 从入门到精通 2:函数
  • Linux的软件防火墙iptables
  • 香港服务器容器网络插件的多节点通信性能基准测试
  • LeetCode 刷题【36. 有效的数独】
  • 6- Python 网络爬虫—验证码突破全解析: 从 OCR 到深度学习的对抗实战指南
  • CSS 选择器进阶:用更聪明的方式定位元素
  • DBSCAN聚类算法实战全解析
  • 多Agent技术发展与进化
  • vue+flask山西非遗文化遗产图谱可视化系统
  • IntelliJ IDEA 新手全方位使用指南
  • 深入 FastMCP 源码:认识 tool()、resource() 和 prompt() 装饰器
  • Kubelet 探针如何选择 IP:status.PodIP 溯源与“同 Pod 两个 IP“现象解析
  • 回答“http协议 ,js组件化,工程化, seo优化策略 ,针对不同平台终端适配 web标注和兼容性”
  • nrm工具管理镜像源
  • 通过 Certimate 统一管理 SSL 证书 支持自动化申请、全平台部署
  • 第八章 SQL编程系列-Oracle慢SQL优化实战:从执行计划到索引设计的深度解析
  • 编程速递:2025 年巴西 Embarcadero 会议,期待您的到来
  • 金融通用智能体(Financial General Agent, FGA)的端到端解决方案
  • 视图是什么?有什么用?什么时候用?MySQL中的视图
  • Swift 实战:秒算两个数组的交集(LeetCode 349)
  • 一周学会Matplotlib3 Python 数据可视化-标注 (Annotations)
  • 力扣-74.搜索二维矩阵
  • [Oracle] MAX()和MIN()函数
  • 深入理解 Gin 框架的路由机制:从基础使用到核心原理
  • Linux系统之lua 详解
  • 版本控制的详细说明介绍(已有github账号版)
  • 记一次奇异的bug
  • 蓝牙技术概览
  • [Oracle] SUBSTR()函数
  • 轻量化阅读应用实践:21MB无广告电子书阅读器测评