项目部署到服务器上后,发送请求,响应异常: {code: 408, msg: '请求超时'}
- 前端请求超时(默认10秒)
- 后端服务响应缓慢或无响应
这里记录一下,这个一直卡着我,理一下解决这个的思路
以前部署项目的时候,遇到最多的不是404就是502,408请求超时还是第一次碰见。
第一:下意识想到的就是去找nignx的配置文件,增加了超时设置:
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# —末尾斜杠会移除/api前缀——》这里记一下,写的时候把8089后面的斜杠给漏了,报了个404出来
proxy_pass http://8.134.239.0:8089/;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
显而意见,还是不行(如果这样就解决了,那我就不会打开这个‘写文章’了5555
第二:这时我就在想难道是我的项目代码的问题?——临时增加前端超时时间,重新build一下再上传项目,显然,依旧不行(但试试又何妨)
const instance = axios.create({
baseURL: '/api', // 使用相对路径
timeout: 30000, // 临时增加超时时间到30秒
.....
})
第三:接着就去检查了一下后端的日志
# 检查后端进程是否还在运行
ps aux | grep java
# 检查8089端口(后端)状态
netstat -tulpn | grep 8089
# 查看后端服务日志,看看有什么错误
cd /www/wwwroot/backend
tail -n 50 backend.log
# 先杀掉现有的Java进程
pkill -f "mega-space-vr"
# 重新启动后端服务
cd /www/wwwroot/backend
nohup java -jar mega-space-vr-0.0.1-SNAPSHOT.jar > backend.log 2>&1 &
# 查看启动日志——《很重要!要学会报错去看日志》
tail -f backend.log
#这一步还没什么问题,然后就去尝试curl测试后端API
curl -X POST http://localhost:8089/adminUser/login \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=admin123"
#!!控制台一直没响应
# 查看后端服务的完整启动日志
tail -n 100 backend.log
# 查看是否有错误信息
grep -i "error\|exception\|failed" backend.log
不查不知道一查吓一跳,果然有报错日志出来了:
2025-06-18T05:25:53.414+08:00 ERROR 94835 --- [eate-1533434416] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://localhost:3306/megaspacevr?useUnicode=true&characterEncoding=UTF-8, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
果然是数据库连接失败:
Access denied for user 'root'@'localhost' (using password: YES)。后端应用无法连接到MySQL数据库,用户名/密码认证失败。这就是为什么curl请求一直挂起 - 应用在尝试连接数据库时被阻塞了。
这里我就想到了,不会是后端代码配置文件的数据库账号密码的问题,问题出在宝塔面板上,在数据库中,建的数据库对应会有一个账号密码(这个没关系,主要是php数据库管理的),数据库连接失败的关键是在——root密码
这个要设置为项目本地的数据库密码。这里再提一下,这个地方还会出现一个问题就是在添加数据库的时候,会出现添加失败的情况——连接不了本地数据库什么的,也是这个地方的问题。
所以服务器上的部署报错,408超时,除了nignx、前端代码的问题,还有数据库的问题。