Modular Sinatra应用程序在Passenger下返回404

我有一个模块化的Sinatra应用程序,它在机架上执行时运行良好。 config.ru文件定义如下:

map '/' do
  run My::Controllers::Default
end

map '/api' do
  run My::Controllers::Api
end

当我在nginx /乘客下运行应用程序时,除了404之外,我什么也得不到,即使是'/'路线。 怀疑路由有问题,我修改config.ru如下:

run My::Controllers::Default

重新启动nginx后,我被提供了应用程序的默认页面。 然而,应用程序的默认页面到达api路径以获得一些文档显示,并且该部分返回404。鉴于config.ru能够运行默认控制器,我相信这个问题没有任何可以加载所有相关的ruby文件 - 这似乎是我在SO上发现的其他相关问题中的问题。

考虑到这一点,我修改config.ru如下:

map '/api' do
  run My::Controllers::Api
end

run My::Controllers::Default

在这一点上,我回到404甚至是'/'路线。 看起来,map语句令Web服务器感到困惑,并且无法找到正确的路线。

如果我只是使用机架运行来运行应用程序,那么所有的行为都如预期的那样,所以我真的很难解释我所看到的。


我记得这是答案。 请让我知道这对你有没有用。 如果有,我会“接受”答案,以便其他人可以找到答案。

中间件

乘客中的错误阻止了解config.ru中的地图声明https://groups.google.com/forum/#!msg/phusion-passenger/PoEEp9YcWbY/1y0QL_i3tHYJ

class PassengerFix

  def initialize(app)
    @app = app
  end

  def call(env)
    env["SERVER_NAME"] = env["HTTP_HOST"]
    return @app.call(env)
  end

end

config.ru

configure do
  use PassengerFix
end
链接地址: http://www.djcxy.com/p/32535.html

上一篇: Modular Sinatra app returns 404's under Passenger

下一篇: RoR Application and nginx with Passenger on Ubuntu