4.3 KiB
4.3 KiB
政府端登录接口404错误修复说明
问题描述
- 错误URL:
https://ad.ningmuyun.com/api/government/auth/login - 错误状态: 404 Not Found
- 影响范围: 政府端管理系统登录功能
问题根因分析
1. 前端API调用路径
- 前端调用:
https://ad.ningmuyun.com/api/government/auth/login - API定义:
government-admin/src/utils/api.js第74行login: (data) => instance.post('/auth/login', data) - baseURL:
http://localhost:5352/api(开发环境) - 实际请求:
http://localhost:5352/api/auth/login
2. 后端路由配置 ✅
- 认证路由:
government-backend/routes/auth.js第6行router.post('/login', login) - 应用路由注册:
government-backend/app.js第39行app.use('/api/auth', require('./routes/auth')); - 完整路径:
/api/auth/login
3. Nginx配置问题 ❌
问题所在: nginx配置中缺少政府认证API的路径匹配
原始配置问题:
- 只有
/api/government/的代理配置 - 缺少
/api/government/auth/的专门代理配置 - 导致
/api/government/auth/login请求无法正确路由到后端的/api/auth/login
解决方案
修复nginx配置
在 government-backend/_etc_nginx_conf.d_ningmuyun_one.conf 中添加政府认证API代理配置:
# 政府认证API代理 - 处理登录等认证接口
location ^~ /api/government/auth/ {
proxy_pass http://localhost:5352/api/auth/; # 政府后端认证服务端口
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;
# CORS配置
add_header 'Access-Control-Allow-Origin' 'https://ad.ningmuyun.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, X-Requested-With' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' 'https://ad.ningmuyun.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, X-Requested-With';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Content-Type' 'text/plain; charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
路径映射说明
- 前端请求:
/api/government/auth/login - nginx匹配:
location ^~ /api/government/auth/ - 代理转发:
http://localhost:5352/api/auth/login - 后端处理:
/api/auth/login(authController.login)
验证步骤
-
重启nginx服务:
sudo nginx -t # 检查配置语法 sudo systemctl reload nginx # 重新加载配置 -
测试登录接口:
curl -X POST https://ad.ningmuyun.com/api/government/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"test","password":"test"}' -
检查前端登录功能:
- 访问政府端管理系统登录页面
- 输入正确的用户名和密码
- 确认登录成功
相关文件
government-backend/_etc_nginx_conf.d_ningmuyun_one.conf- nginx配置文件government-backend/routes/auth.js- 认证路由government-backend/controllers/authController.js- 认证控制器government-admin/src/utils/api.js- 前端API配置government-admin/src/stores/auth.js- 前端认证状态管理
修复时间
2024年12月19日
修复状态
✅ 已修复 - nginx配置已更新,添加了政府认证API代理配置
重要说明
配置优先级: 在nginx中,更具体的location规则会优先匹配。因此:
/api/government/auth/配置必须在/api/government/配置之前- 这样
/api/government/auth/login会匹配到第一个规则,正确代理到/api/auth/login - 其他
/api/government/开头的请求会匹配到第二个规则
测试方法
运行测试脚本验证修复效果:
cd government-backend
node test-login-api.js
重启nginx命令
sudo nginx -t # 检查配置语法
sudo systemctl reload nginx # 重新加载配置