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
相关推荐
Gofarlic_oms12 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
档案宝档案管理3 小时前
权限分级管控,全程可追溯,筑牢会计档案安全防线
运维·网络·人工智能
倔强的石头1064 小时前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
观北海5 小时前
AiScan-N:AI全自动化渗透测试工具的深度技术解析
运维·自动化
Ujimatsu5 小时前
虚拟机安装Ubuntu 26.04.x及其常用软件(2026.4)
linux·运维·ubuntu
Agent产品评测局7 小时前
制造业生产调度自动化落地,完整步骤与避坑指南:2026企业级智能体选型与实战全景
运维·人工智能·ai·chatgpt·自动化
狂奔的sherry8 小时前
一次由 mount 引发的 Linux 文件系统“错觉”
linux·运维·服务器
志栋智能8 小时前
超自动化巡检:让合规与审计变得轻松简单
运维·网络·人工智能·自动化
小黑要努力8 小时前
智能音箱遇到的问题(一)
linux·运维·git
好度8 小时前
自动化教程-封装浏览器驱动
运维·自动化