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
相关推荐
腾渊信息科技公司17 小时前
工业数据运维痛点根治方案:基于AI Agent的产线自动化台账系统落地
运维·人工智能·自动化·个人开发·ai编程
Dxy123931021618 小时前
Proxy Protocol v2 详解
运维
踏月的造梦星球18 小时前
DMDPC 学习:架构、部署、运维与调优
运维·数据库·学习·架构
潘正翔18 小时前
docker核心概念
linux·运维·服务器·docker·容器·centos·运维开发
renhongxia119 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
Dovis(誓平步青云)20 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
csdn_aspnet21 小时前
GitHub Actions自动化运维实战,用CI/CD流水线实现测试、部署、安全扫描一体化
运维·安全·ci/cd·自动化·github
Inhand陈工1 天前
数据中心UPS无功补偿与智能化监控方案:基于IG502的Modbus RTU转IEC61850实战
运维·人工智能·物联网·信息与通信
qetfw1 天前
CentOS 7 搭建 LDAP 目录服务
linux·运维·centos
IT方大同1 天前
linux简介
linux·运维·服务器