我已经使用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
文件夹中时,它确实有效。
答案 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配置问题。