【问题标题】:Nginx only serving static files for a Sinatra applicationNginx 只为 Sinatra 应用程序提供静态文件
【发布时间】:2023-04-07 01:40:01
【问题描述】:

我正在尝试在 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 的用户不同的用户)。

谢谢

【问题讨论】:

  • 当你有一个静态的index.html 时,Ruby 和 Sinatra 是如何影响这里的?
  • 好吧,即使我将它重命名为 test.html,它也无法正常工作。 Sinatra 正在“/”获取此类文件。
  • 除非你在某处有config.ru,否则Passenger 无法知道你有一个Rack 应用程序。
  • 就是这样!谢谢!我主要在 Rails 上运行,所以我忘记了。花了我 3 个小时,但非常感谢!
  • 您使用的是 RBENV/RVM 还是系统 ruby​​?

标签: ruby nginx passenger


【解决方案1】:

感谢@tadman,配置没问题,问题只是缺少 config.ru 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 2011-01-27
    • 1970-01-01
    • 2023-03-15
    • 2021-10-31
    • 1970-01-01
    • 2016-01-28
    相关资源
    最近更新 更多