Loading

Nginx配置介绍

以下是一个Nginx配置介绍,整合了主流场景的核心配置和优化技巧,按功能模块分类展示:


一、基础架构配置

# 全局配置(主进程参数)
user  nginx;                         # 运行用户
worker_processes  auto;              # 工作进程数(推荐设为CPU核数)
error_log  /var/log/nginx/error.log warn; # 错误日志路径及级别
pid        /var/run/nginx.pid;       # PID文件位置

# 事件模型配置
events {
    worker_connections  10240;       # 单进程最大连接数
    use epoll;                       # Linux系统高性能I/O模型
    multi_accept on;                 # 同时接收多个新连接
}

二、HTTP核心模块

http {
    include       /etc/nginx/mime.types; # MIME类型映射
    default_type  application/octet-stream;
    sendfile      on;                # 启用高效文件传输
    tcp_nopush    on;                # 优化数据包发送
    keepalive_timeout  65;           # 长连接超时时间

    # 日志格式
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"'; 
    access_log  /var/log/nginx/access.log  main;
}

三、虚拟主机配置

1. 静态资源服务

server {
    listen       80;
    server_name  static.example.com;
    root         /var/www/static;    # 资源根目录
    
    location / {
        index  index.html;
        try_files $uri $uri/ =404;   # 文件查找规则
    }

    # 图片/CSS/JS缓存优化
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;                # 缓存30天
        access_log off;             # 关闭访问日志
    }
}

2. 反向代理配置

server {
    listen 80;
    server_name api.example.com;
    
    location / {
        proxy_pass http://backend_server;  # 后端服务地址
        proxy_set_header Host $host;       # 传递原始域名
        proxy_set_header X-Real-IP $remote_addr; # 客户端真实IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

upstream backend_server {
    server 192.168.1.100:8080 weight=5;  # 权重轮询
    server 192.168.1.101:8080 max_fails=3; # 失败重试策略
}

四、高级功能配置

1. SSL/TLS加密

server {
    listen 443 ssl;
    server_name secure.example.com;
    ssl_certificate     /etc/nginx/ssl/fullchain.pem;  # 证书路径
    ssl_certificate_key /etc/nginx/ssl/privkey.key;
    
    # 加密协议优化
    ssl_protocols TLSv1.2 TLSv1.3;        # 禁用老旧协议
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers on;         # 优先服务端加密套件
}

2. 负载均衡策略

upstream app_cluster {
    least_conn;                    # 最少连接算法
    server 10.0.0.1:8000 weight=3; # 权重设置
    server 10.0.0.2:8000;
    server 10.0.0.3:8000 backup;   # 备用服务器
}

3. 缓存加速

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; 

location / {
    proxy_cache my_cache;               # 启用缓存区
    proxy_cache_valid 200 302 60m;      # 成功响应缓存60分钟
    proxy_cache_use_stale error timeout; # 故障时使用旧缓存
}

五、安全与优化

1. 请求限制

# 限制单IP每秒10个请求
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s; 

location /api/ {
    limit_req zone=req_limit burst=20;  # 突发流量限制
    deny 192.168.1.100;                # IP黑名单
}

2. Gzip压缩

gzip on;                              # 启用压缩
gzip_comp_level 6;                    # 压缩级别(1-9)
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1k;                   # 最小压缩文件大小

六、特殊场景配置

1. WebSocket支持

location /ws/ {
    proxy_pass http://websocket_backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;  # 协议升级头
    proxy_set_header Connection "upgrade";
}

2. 单页应用路由

location / {
    try_files $uri $uri/ /index.html; # 解决Vue/React路由404问题
}

七、调试与维护

# 配置文件检查
nginx -t                               # 语法校验

# 服务重载
systemctl reload nginx                 # 平滑重载配置

配置说明文档

  1. 全局配置:定义进程数、日志等基础参数
  2. 虚拟主机(Server):通过不同域名/端口隔离服务
  3. 位置块(Location):URI路径匹配规则,支持正则表达式
  4. Upstream模块:定义后端服务器集群,支持健康检查
  5. 缓存策略:通过proxy_cache实现内容加速

完整配置示例:可参考官方文档或各技术博客的深度解析。

posted @ 2025-04-24 12:30  夷某蓁  阅读(24)  评论(0)    收藏  举报