Ruby Nginx仅为Sinatra应用程序提供静态文件
我正在尝试在Nginx下运行ruby(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
/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?