📖 Nginx 配置速查

按使用场景分组,点击"复制"按钮一键复制命令

反向代理与负载均衡
定义后端服务池
upstream backend { server 10.0.0.1:8080 weight=1; server 10.0.0.2:8080; }
故障节点自动摘除
upstream backend { server 10.0.0.1:8080 max_fails=3 fail_timeout=30s; }
开启长连接复用(降延迟)
upstream backend { keepalive 32; } proxy_http_version 1.1; proxy_set_header Connection "";
会话保持(按客户端 IP 哈希)
upstream backend { ip_hash; server 10.0.0.1:8080; }
代理超时三件套(避免 504)
proxy_connect_timeout 5s; proxy_send_timeout 60s; proxy_read_timeout 60s;
缓存与压缩
开启 gzip 压缩
gzip on; gzip_min_length 1k; gzip_types text/css application/javascript application/json;
静态资源强缓存(30 天)
location ~* \.(js|css|png|jpg|svg)$ { expires 30d; add_header Cache-Control "public"; }
HTML 禁缓存(避免发版读到旧页)
location = /index.html { add_header Cache-Control "no-cache, no-store"; }
定义代理缓存区
proxy_cache_path /data/cache levels=1:2 keys_zone=api:10m max_size=1g inactive=60m;
启用代理缓存 + 命中标识
proxy_cache api; proxy_cache_valid 200 10m; add_header X-Cache-Status $upstream_cache_status;
日志与限流
自定义日志格式(含耗时)
log_format main '$remote_addr [$time_local] "$request" $status rt=$request_time';
记录上游地址与后端耗时
log_format timed '$request $status upstream=$upstream_addr urt=$upstream_response_time';
定义限流共享内存区(按 IP)
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
应用限流规则(允许突发 20)
limit_req zone=api burst=20 nodelay;
限制单 IP 并发连接数
limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn perip 10;