xfy 6543422281 docs: 添加 Nginx 配置和 Lua 脚本示例文档
- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板
- lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:59:22 +08:00

118 lines
3.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# 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