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