整理一下这台小站的 nginx 配置。都是些基础但容易忘的东西,记下来下次换机器直接抄。

gzip:默认只压 text/html

gzip 模块默认只压缩 HTML,CSS、JS、JSON 这些要手动补上:

gzip on;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;
gzip_vary on;

静态资源缓存

CSS、JS、图片、字体这类不常变的文件,直接给长缓存:

location ~* \.(css|js|png|jpg|jpeg|gif|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

TLS 1.3 与 http2

现在只留 TLS 1.3,握手快、配置也简单。另外注意 nginx 1.25.1 之后 http2 的写法变了,从 listen 参数里拆成了独立指令:

ssl_protocols TLSv1.3;

# nginx >= 1.25.1
http2 on;
# 旧版本写法: listen 443 ssl http2;

还有静态站记得用 try_files 兜底,别把不存在的路径暴露出去:

location / {
    try_files $uri $uri.html $uri/ =404;
}

大概就是这些,完整的配置文件就不整份贴了。