Nginx常用配置

Nginx 常用配置围绕 静态资源服务、反向代理、负载均衡、HTTPS 配置、限流 等核心场景,以下是结构化的常用配置示例及关键说明。

一、 全局基础配置(nginx.conf 顶部)

控制 Nginx 进程的核心参数,影响整体性能。

bash 复制代码
# 工作进程数,建议等于 CPU 核心数
worker_processes  4;
# 错误日志路径及级别(debug/info/warn/error/crit)
error_log  /var/log/nginx/error.log  warn;
# PID 文件路径
pid        /var/run/nginx.pid;

events {
    # 单个工作进程的最大连接数
    worker_connections  1024;
    # 多路复用模型,Linux 推荐 epoll
    use epoll;
}

二、 静态资源服务配置

用于部署前端静态文件(Vue/React 打包产物),优化访问性能。

bash 复制代码
http {
    include       mime.types;
    default_type  application/octet-stream;
    # 开启高效文件传输模式
    sendfile        on;
    # 长连接超时时间
    keepalive_timeout  65;
    # 开启 gzip 压缩,减小传输体积
    gzip  on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    server {
        listen       80;
        server_name  localhost;
        # 静态资源根目录
        root   /usr/share/nginx/html;
        index  index.html index.htm;

        location / {
            # 解决前端路由刷新 404 问题(SPA 应用必备)
            try_files $uri $uri/ /index.html;
        }

        # 静态资源缓存策略,图片/JS/CSS 缓存 30 天
        location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 30d;
            add_header Cache-Control "public, max-age=2592000";
        }
    }
}

三、 反向代理配置(代理 Java 后端服务)

将前端请求转发到后端 Spring Boot/Tomcat 服务,解决跨域和端口暴露问题。

bash 复制代码
http {
    server {
        listen 80;
        server_name  api.example.com;

        location /api/ {
            # 后端服务地址
            proxy_pass http://127.0.0.1:8080/;
            # 传递真实客户端 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;
            # 反向代理超时时间
            proxy_connect_timeout 60s;
            proxy_read_timeout 60s;
        }
    }
}

四、 负载均衡配置

分发请求到多个后端实例,提升系统可用性和并发能力。

bash 复制代码
http {
    # 定义后端服务集群
    upstream backend_cluster {
        # 策略1:轮询(默认)
        server 192.168.1.101:8080 weight=1;
        server 192.168.1.102:8080 weight=2; # weight 越大,权重越高
        # 策略2:ip_hash(会话粘滞,同一IP固定到同一实例)
        # ip_hash;
        # 策略3:fair(按后端响应时间分配,需额外模块)
        # fair;
    }

    server {
        listen 80;
        server_name  www.example.com;

        location / {
            proxy_pass http://backend_cluster;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

五、 HTTPS 配置(HTTP 转 HTTPS)

配置 SSL 证书,实现加密传输。

bash 复制代码
http {
    server {
        listen 80;
        server_name example.com;
        # HTTP 强制跳转 HTTPS
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl http2;
        server_name example.com;

        # SSL 证书路径
        ssl_certificate     /etc/nginx/ssl/example.crt;
        ssl_certificate_key /etc/nginx/ssl/example.key;
        # 安全的 SSL 协议版本
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
}

六、 限流配置(防止恶意请求)

限制单位时间内的请求数,保护后端服务。

bash 复制代码
http {
    # 定义限流规则:基于 IP 限流,10r/s(每秒10个请求),缓冲区 20 个请求
    limit_req_zone $binary_remote_addr zone=limit_zone:10m rate=10r/s;

    server {
        listen 80;
        server_name example.com;

        location / {
            # 应用限流规则,burst 突发请求数,nodelay 不延迟处理
            limit_req zone=limit_zone burst=20 nodelay;
            proxy_pass http://backend_cluster;
        }
    }
}

七、 关键配置检查与重载

bash 复制代码
# 检查配置语法是否正确
nginx -t
# 平滑重载配置(不中断服务)
nginx -s reload
相关推荐
YH行业报告分析2 小时前
2026电缆铺设设备市场:自动化敷设与电网升级驱动增长
运维·自动化
ajassi20003 小时前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎3 小时前
linux 进程信号(下)
linux·运维·服务器
Mikko73 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋3 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm3 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Liuqy-054 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器
考研保研资料分享4 小时前
自动化控制保研经验合辑:上交夏令营、北工大预推免与跨专业面试复盘(2025)
运维·面试·自动化
乐维_lwops5 小时前
2026选择运维监控系统时应该重点考察哪些功能?
大数据·运维·人工智能