Nginx 不适用于 Sinatra JSON 路由

工具

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

我已经使用passenger-ruby-sinatra-demo repo对此进行了测试

我已将rootvar 设置为/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 屏幕。

我究竟做错了什么?

更新:当我添加一个名为的空文件夹helloviews文件夹,它的工作。

工具

通过将以下内容添加到我的/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 配置问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章