💡 实战经验
proxy_pass 的尾部斜杠
这是 Nginx 最经典的坑:proxy_pass http://backend 和 proxy_pass http://backend/ 行为完全不同。不带斜杠时,原始 URI 会原样传递;带斜杠时,location 匹配的部分会被替换。很多人被这个坑了一下午。
改配置前先 nginx -t
改完配置直接 nginx -s reload,如果配置有语法错误,reload 通常会失败,旧 worker 继续服务,但你的新配置不会生效;更糟的是后续重启会直接失败。改配置三步走:nginx -t(检查语法)→ 看报错 → nginx -s reload。
try_files 是 SPA 的救命稻草
Vue/React 单页应用用 History 模式路由,刷新页面直接 404——因为服务器找不到对应的 HTML 文件。加一行 try_files $uri $uri/ /index.html; 就解决了。
upstream 名字别用 localhost
写 upstream localhost { ... } 看着没问题,但 Nginx 会把 localhost 当成一个真实域名去解析,可能解析到意外的 IP。upstream 名字用有意义的标识符:upstream api_backend { ... }。
别忘了 server_tokens off
默认情况下 Nginx 在响应头和错误页里暴露版本号(Server: nginx/1.25.3)。攻击者知道版本后就能查已知漏洞。一行配置解决:server_tokens off;。