Nginx不适用于Sinatra JSON路由

时间:2017-08-26 11:37:40

标签: ruby nginx sinatra passenger

我已经使用Nginx 1.12.1设置了一个Ubuntu 16.04服务器并安装并配置了Phusion Passenger 5.1.8(开源)以便正常工作。

我已使用passenger-ruby-sinatra-demo repo。

对此进行了测试

我已将root var设置为/views文件中repo的/etc/nginx/sites-available/default文件夹:

root /var/www/passenger-ruby-sinatra-demo/views;

/views文件夹包含一个名为index.erb的文件。

以下是app.rb文件的内容:

require 'sinatra/base'
require 'json'

class ExampleApp < Sinatra::Base
  get '/' do
    erb :index
  end

  get '/hello' do
    content_type 'application/json'

    {'message'=>'hello world!'}.to_json
  end
end

现在访问/时,我看到了html页面。但是在访问/hello时,我会看到一个404屏幕。

我做错了什么?

更新: 当我将一个名为hello的空文件夹添加到views文件夹中时,它确实有效。

1 个答案:

答案 0 :(得分:0)

通过将以下内容添加到我的/etc/nginx/sites-available/default配置文件(server块内)来解决此问题:

...

location / {
    try_files $uri @app;
}

location @app {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
}

...

我删除了:

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
}

这是与上面删除的代码相关的Nginx配置问题。

相关问题