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
相关推荐
Lsetea2 小时前
部署证书后提示“证书名称与输入不匹配”:Safari 报错的三层排查
nginx·https·safari·ssl证书·openssl
蓝速科技2 小时前
会议室门牌签到功能选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
逐流人2 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
酣大智5 小时前
网络协议计时器 & 发包间隔汇总
运维·网络·tcp/ip
云运维笔记12 小时前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
码农学院13 小时前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi13 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事13 小时前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯
Doris__HE15 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
打工仔折腾 AI16 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn