2017-07-28 134 views
1

我试图在Nginx下运行ruby(sinatra)脚本。 我的文件夹结构是:Nginx只为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的用户不同的用户)时很重要。

感谢

+0

当你有一个静态的'index.html'时,Ruby和Sinatra是如何考虑的? – tadman

+0

好吧,即使我将它反向test.html,它仍然无法正常工作。 Sinatra正在'/'get上提供这样的文件。 –

+0

除非你在那里有一个'config.ru',否则Passenger没办法知道你有一个Rack应用程序。 – tadman

回答

1

所以感谢@tadman配置是好的,问题只是缺少config.ru文件。