Skip to content

💡 实战经验

proxy_pass 的尾部斜杠

这是 Nginx 最经典的坑:proxy_pass http://backendproxy_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;