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
相关推荐
有代理ip2 小时前
后端服务安全加固:Nginx 反向代理配置教程
运维·nginx·安全
heartbeat..2 小时前
JVM 参数配置指南:内存调优、收集器选择与问题排查
java·运维·jvm·性能优化
我也不曾来过12 小时前
进程控制(很详细)
linux·运维·服务器
不会代码的小测试2 小时前
UI自动化-Grid分布式运行
运维·分布式·python·selenium·自动化
养多肉2 小时前
宝塔面板绑定域名(不带端口)
服务器·nginx·安全
2301_772204282 小时前
Linux内核驱动--设备驱动
linux·运维·服务器
China_Yanhy2 小时前
入职 Web3 运维日记 · 第 6 日:触碰红线 —— 私钥托管与 AWS KMS 的博弈
运维·web3·aws
WJ.Polar2 小时前
华为交换机STP与链路聚合实战
运维·网络
鹏大师运维2 小时前
统信 UOS OpenSSL 漏洞如何修复?外网 / 内网两种方式一次讲清
linux·运维·openssl·国产操作系统·统信uos·麒麟桌面操作系统·补丁修复