Nginx 做反向代理是日常运维中最常用的功能,但配置起来有不少坑。把平时遇到最多的几个问题整理一下。
1. proxy_pass 末尾斜杠
带斜杠会把匹配路径替换掉,不带斜杠保留完整路径。很多 404 都是这个原因。
location /api/ {
proxy_pass https://www.lvpn.cc
}
# 请求 /api/user → https://www.lvpn.cc
location /api/ {
proxy_pass https://www.lvpn.cc
}
# 请求 /api/user → https://www.lvpn.cc
2. 504 超时
后端接口处理时间长时 Nginx 默认 60s 超时会返回 504:
proxy_connect_timeout 30s;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
3. 前端路由刷新 404
前后端分离项目用 history 模式刷新页面会 404,加一行解决:
location / {
try_files $uri $uri/ /index.html;
}
这几个问题排查起来挺费时间,记下来以后遇到直接看就行。