在使用 Nginx 部署 Vue 项目时,由于 Vue 是单页面应用(SPA),客户端的路由是由前端(Vue Router)管理的,而不是通过服务器端的路由。为了确保当用户直接访问非根路径(如 /about
或 /user/profile
)时,Nginx 不返回 404 错误,而是重定向到 index.html
,让 Vue Router 处理路由。
这里是一个常见的 Nginx 配置示例,处理 Vue 客户端路由:
server {
listen 80;
server_name yourdomain.com;
# 定义 Vue 项目的根目录
root /path/to/your/vue-project/dist;
# 默认入口文件
index index.html;
# 对所有请求进行处理
location / {
try_files $uri $uri/ /index.html;
}
# 静态文件资源的处理
location /static/ {
alias /path/to/your/vue-project/dist/static/;
}
# 处理 API 请求的代理(可选)
location /api/ {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 其他可选配置,例如日志、错误页面等
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}
说明:
- root: 指向你的 Vue 项目构建后生成的
dist
文件夹。 - index: 定义默认的入口文件为
index.html
。 - location /: 对所有路径请求进行处理,
try_files
指令尝试按照顺序查找文件,如果没有匹配的文件,则将请求重定向到index.html
,这样 Vue Router 可以处理非根路径的路由。 - location /static/: 处理静态资源请求,通常将 Vue 项目的静态资源目录别名设置为
/static/
。 - location /api/: 如果前端需要调用后端 API,可以通过此部分配置将 API 请求代理到后端服务器。
这个配置确保了无论用户通过哪种 URL 访问应用,Vue Router 都能正确处理客户端路由。