Ruby Nginx仅为Sinatra应用程序提供静态文件

Ruby Nginx仅为Sinatra应用程序提供静态文件,ruby,nginx,passenger,Ruby,Nginx,Passenger,我正在尝试在Nginx下运行ruby(sinatra)脚本。 我的文件夹结构是: /www (775) /www/public (775) /www/public/img.jpg (644) /www/app.rb (775) /www/index.html (775) 我的nginx.conf是: worker_processes 1; events { worker_connections 1024; } http { passenger_root /home/my_user

我正在尝试在Nginx下运行ruby(sinatra)脚本。 我的文件夹结构是:

/www (775)
/www/public (775)
/www/public/img.jpg (644)
/www/app.rb (775)
/www/index.html (775)
我的nginx.conf是:

worker_processes  1;
events {
  worker_connections  1024;
}

http {
  passenger_root /home/my_user/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.6;
  passenger_ruby /home/my_user/.rvm/gems/ruby-2.4.1/wrappers/ruby;

  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;

  server {
    listen       80;
    server_name  xxx.xxx.xx.xx;

    root /www/public;
    passenger_enabled on;
  }
}
但是我得到的只是一个xxx.xxx.xx.xx/img.jpg,没有脚本。
xxx.xxx.xx.xx/index.html给我错误404,xxx.xxx.xx.xx又给我错误403

用户运行nginx服务器的条件很重要(文件夹/www和其中的文件的用户与运行nginx的用户不同)


谢谢

多亏了@tadman,配置还行,问题只是缺少config.ru文件。

当你有一个静态的
index.html
时,Ruby和Sinatra是如何在这里起作用的呢?好吧,即使我重新命名为test.html,它也无法工作。Sinatra在“/”get上提供这样的文件。除非您在其中的某个地方有一个
config.ru
,否则乘客无法知道您有一个机架应用程序。就是这样!谢谢我基本上是在轨道上跑步,所以我忘了。我花了3个小时,但非常感谢!您是使用RBENV/RVM还是仅使用systemruby?