- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板 - lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
118 lines
3.2 KiB
Plaintext
118 lines
3.2 KiB
Plaintext
# ============================================================
|
||
# Nginx Gzip 压缩配置示例
|
||
# ============================================================
|
||
#
|
||
# 功能说明:
|
||
# - 响应内容压缩
|
||
# - 减少传输带宽
|
||
# - 可配置压缩级别和类型
|
||
#
|
||
# Lolly 对应配置:
|
||
# server:
|
||
# compression:
|
||
# type: "gzip"
|
||
# level: 6
|
||
# min_size: 1024
|
||
# gzip_static: false
|
||
# gzip_static_extensions: [".gz", ".br"]
|
||
# types:
|
||
# - "text/html"
|
||
# - "text/css"
|
||
# - "text/javascript"
|
||
# - "application/json"
|
||
# - "application/javascript"
|
||
# ============================================================
|
||
|
||
http {
|
||
server {
|
||
listen 80;
|
||
server_name gzip.example.com;
|
||
|
||
# Gzip 基础配置
|
||
# Lolly 对应: compression 配置块
|
||
|
||
# 启用 Gzip
|
||
gzip on;
|
||
|
||
# 压缩级别(1-9)
|
||
# 1: 最快,压缩率最低
|
||
# 9: 最慢,压缩率最高
|
||
# 推荐: 4-6(平衡性能和压缩率)
|
||
# Lolly 对应: compression.level: 6
|
||
gzip_comp_level 6;
|
||
|
||
# 最小压缩大小
|
||
# 小于此值不压缩(压缩反而增加大小)
|
||
# Lolly 对应: compression.min_size: 1024
|
||
gzip_min_length 1024;
|
||
|
||
# 压缩类型
|
||
# 指定需要压缩的 MIME 类型
|
||
# Lolly 对应: compression.types
|
||
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml application/xml+rss application/x-javascript image/svg+xml;
|
||
|
||
# 压缩变体
|
||
gzip_vary on; # 添加 Vary: Accept-Encoding 头
|
||
|
||
# 压缩缓冲
|
||
gzip_buffers 16 8k; # 16 个 8KB 缓冲区
|
||
|
||
# HTTP 版本
|
||
gzip_http_version 1.1; # 仅 HTTP/1.1 以上启用
|
||
|
||
# 禁用 IE6 压缩(IE6 有 bug)
|
||
gzip_disable "msie6";
|
||
|
||
# 预压缩文件支持
|
||
# 自动查找 .gz 文件
|
||
# Lolly 对应: compression.gzip_static: true
|
||
gzip_static on;
|
||
|
||
location / {
|
||
root /var/www/html;
|
||
}
|
||
|
||
# 静态资源(预压缩优化)
|
||
location /assets {
|
||
# 预压缩文件优先
|
||
gzip_static on;
|
||
|
||
root /var/www/assets;
|
||
}
|
||
|
||
# API 响应压缩
|
||
location /api {
|
||
gzip_types application/json;
|
||
gzip_min_length 256; # API 响应较小,降低阈值
|
||
|
||
proxy_pass http://backend:8080;
|
||
}
|
||
}
|
||
}
|
||
|
||
# Gzip 说明:
|
||
#
|
||
# 1. 压缩级别选择:
|
||
# - 静态内容(CSS/JS): 建议预压缩,级别 9
|
||
# - 动态内容: 建议 4-6,平衡性能
|
||
# - 实时响应: 建议 1-3,降低延迟
|
||
#
|
||
# 2. 预压缩文件:
|
||
# - 预先使用 gzip -9 压缩
|
||
# - 文件名: file.js.gz
|
||
# - nginx 直接返回预压缩文件
|
||
# - 避免实时压缩开销
|
||
#
|
||
# 3. MIME 类型:
|
||
# - 图片/视频通常已压缩,不需要再压缩
|
||
# - 文本类型收益最大
|
||
# - 注意压缩 JSON API 响应
|
||
#
|
||
# 4. Vary 头:
|
||
# - Vary: Accept-Encoding
|
||
# - 告知缓存服务器根据 Accept-Encoding 缓存不同版本
|
||
# - 防止给不支持 gzip 的客户端返回压缩内容
|
||
#
|
||
# 5. 生成预压缩文件:
|
||
# gzip -9 -k file.js # 保留原文件,生成 file.js.gz
|
||
# brotli --best file.js # 生成 file.js.br |