You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sinatra部署Kubernetes:迁移至子目录后生产环境资源404,本地正常

Sinatra应用部署到Kubernetes子路径后静态资源404问题

我的代码仓库:nullset2/smbdxfortunes

环境配置

  • Sinatra应用
  • Ruby 2.7
  • Kubernetes 1.17
  • Traefik Ingress作为反向代理

问题场景

原本我的应用在nullset2.zapto.org根路径运行正常,现在希望迁移至nullset2.zapto.org/smbdxfortunes子路径下。

应用遵循Sinatra约定,静态资源和资源文件放在./public子目录,从该目录读取着陆页,同时监听其他路由请求,执行查询后返回erb文件。

已配置Ingress根据路由分发请求到对应应用,并重写应用代码使其监听/smbdxfortunes路由。本地运行时能正常渲染public/index.html及所有资源,但容器化部署到Kubernetes集群后,页面能显示,但public/index.html中引用的所有静态文件返回HTTP 404,导致图片和样式失效。

已尝试的无效方法

  1. 在fortune.rb的Sinatra模块中设置set :base_path, '/smbdxfortunes'
  2. 在fortune.rb中设置set :static, true
  3. 修改index.html中的资源路径以适配子目录,例如将img/vine.png改为/smbdxfortunes/img/vine.png
  4. 配置config.ru如下,并修改Dockerfile的CMD语句使用rackup运行:
require './fortune'
use Rack::Static, :urls => ['/css', '/js', '/img', '/wav'], :root => 'public'
run Sinatra::Application

恳请各位提供帮助。

内容的提问来源于stack exchange,提问作者Alfredo Gallegos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:20:03