1. Jenkins 发布后页面404问题深度排查
当我们在Jenkins上完成构建部署后,访问页面却遇到404错误,这种情况通常意味着资源路径配置存在问题。根据多年实战经验,这类问题往往集中在以下几个关键环节:
1.1 构建产物路径与Nginx配置的映射关系
Jenkins构建生成的静态资源默认会存放在workspace目录下,而Nginx配置中root或alias指向的路径必须与之匹配。一个典型的错误配置示例如下:
nginx复制server {
listen 80;
server_name yourdomain.com;
# 错误示例:路径未对应Jenkins构建输出目录
root /var/www/html;
location / {
try_files $uri $uri/ /index.html;
}
}
正确的做法是在Jenkins构建脚本中明确输出目录,并保持Nginx配置与之同步:
bash复制# Jenkinsfile示例
pipeline {
stages {
stage('Build') {
steps {
sh 'npm run build'
sh 'mkdir -p /var/www/myapp && cp -r dist/* /var/www/myapp/'
}
}
}
}
对应的Nginx配置应调整为:
nginx复制server {
listen 80;
server_name yourdomain.com;
# 正确配置:与Jenkins部署路径一致
root /var/www/myapp;
location / {
try_files $uri $uri/ /index.html;
}
}
关键提示:路径问题导致的404往往容易被忽略,建议在Jenkins构建后立即通过
ls -l命令验证产出物目录结构,并通过nginx -t测试配置有效性。
1.2 单页应用(SPA)的路由特殊处理
现代前端框架(如React、Vue)构建的单页应用需要特殊的路由配置。如果未正确配置,直接访问子路由会出现404。这需要通过Nginx的try_files指令解决:
nginx复制location / {
try_files $uri $uri/ /index.html;
}
我曾遇到一个典型案例:团队使用Vue Router的history模式,但Nginx未配置fallback到index.html,导致所有非根路径访问都返回404。添加上述配置后问题立即解决。
1.3 Jenkins环境变量与构建上下文
Jenkins构建时的环境变量会影响最终产出路径。常见问题包括:
- **WORKS
