如何用 Nginx 部署 React/Vue SPA 应用?
前端 SPA 应用部署到 Nginx 后,刷新页面 404
解决方案
配置 try_files 回退 推荐
server {
listen 80;
server_name app.example.com;
root /var/www/app/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存
location ~* \.(css|js|jpg|png|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}try_files 先尝试匹配真实文件,找不到就回退到 index.html,让前端路由接管。静态资源单独设置长期缓存。
适用场景:所有 SPA 应用(React、Vue、Angular)
Docker 多阶段构建部署
# Dockerfile FROM node:18-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
第一阶段构建前端,第二阶段用 Nginx 托管。最终镜像只有 Nginx + 静态文件,体积小。
适用场景:容器化部署、CI/CD 流水线