GZip压缩可以显著减少传输数据量,提高网站性能。以下是为Node.js站点配置Nginx反向代理时启用GZip压缩的完整指南。
在Nginx配置文件中(通常位于/etc/nginx/nginx.conf
或站点配置文件中),添加或修改以下内容:
http {
# 启用gzip压缩
gzip on;
# 设置压缩级别(1-9),6是推荐的平衡点
gzip_comp_level 6;
# 最小压缩文件大小,小于此值不压缩
gzip_min_length 256;
# 启用对代理请求的压缩
gzip_proxied any;
# 压缩类型
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
# 禁用对IE6的gzip压缩
gzip_disable "MSIE [1-6]\.";
# 添加Vary: Accept-Encoding响应头
gzip_vary on;
# 你的Node.js反向代理配置
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 你的Node.js应用端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
gzip_static on;
然后创建.gz
版本的静态文件(例如style.css.gz
)。
gzip_buffers 16 8k;
gzip_ratio 100;
sudo nginx -t
sudo systemctl reload nginx
bash
curl -H "Accept-Encoding: gzip" -I http://yourdomain.com
应该看到Content-Encoding: gzip
响应头通过以上配置,你的Node.js站点通过Nginx反向代理时将能够有效地使用GZip压缩,提高传输效率。