本地正常的Bullboard UI部署到服务器后出现404错误求助
问题解决步骤
核心问题分析
- 路径不匹配:你在App.js中把BullBoard的基础路径设为了
/admin,但实际访问的是/dashboard,导致路径对应不上。 - Nginx未代理BullBoard路径:当前Nginx仅代理了
/api路径,/admin(或你要使用的/dashboard)请求被Nginx当作静态资源处理,找不到对应文件返回404。
解决方案
步骤1:统一访问路径(二选一)
选项A:修改App.js适配/dashboard访问路径
修改App.js中的BullBoard配置,把基础路径改为/dashboard:
const serverAdapter = new ExpressAdapter(); const bullBoard = createBullBoard({ queues: [new BullMQAdapter(userStatsJobQueue)], serverAdapter: serverAdapter, }); // 把basePath改为/dashboard serverAdapter.setBasePath("/dashboard"); // 同时修改路由挂载路径 app.use(`/dashboard`, serverAdapter.getRouter());
选项B:使用/admin作为访问路径
直接访问example-domain/admin,无需修改App.js代码。
步骤2:修改Nginx配置,代理BullBoard路径
在Nginx的server块中添加对应路径的代理规则,和/api的配置一致:
server { server_name mydomain-server-name; root /home/ubuntu/my-project; index app.js; location / { try_files $uri $uri/ =404; } location /api { proxy_pass http://localhost:6969; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } # 添加BullBoard路径的代理,根据你选的选项替换路径 location /dashboard { # 如果选了选项A用这个;选项B则改为 /admin proxy_pass http://localhost:6969; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/my-domain/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/my-domain/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot }
步骤3:重启服务生效
- 重启Node.js应用,确保配置修改生效。
- 重启Nginx服务:
sudo systemctl restart nginx
额外检查点
- 确认Node.js应用的端口确实是
6969(App.js中PORT=process.env.APP_PORT,需确保环境变量设置正确,或直接指定const PORT = 6969;测试)。 - 确保Nginx配置文件没有语法错误,可通过
sudo nginx -t验证。
内容的提问来源于stack exchange,提问作者Asfandyar Khan
相关产品推荐
相关产品推荐

