【问题标题】:passenger: pass request to rack application if no file found乘客:如果没有找到文件,则将请求传递给机架应用程序
【发布时间】:2013-11-02 08:30:46
【问题描述】:

如果是php,那就差不多了:

server {
    server_name   ...;
    root   /path/to/root/1;
    location / {
        try_files   $uri   @root2;
    }
    location @root2 {
        root   /path/to/root/1;
        try_files   $uri   /index.php?$args;
    }
    location = /index.php {
        include   fastcgi_params;
        fastcgi_pass   php;
    }
}

换句话说,重点是将公共文件分成几个目录。有没有办法用passenger + nginx + sinatra(准确地说)做到这一点?

UPD基本nginx/passenger设置:

server {
    server_name example.com;
    root   /home/yuri/example.com/public;
    passenger_enabled   on;
}

欲了解更多信息,请参阅documentation

【问题讨论】:

    标签: ruby nginx passenger rack


    【解决方案1】:

    你可以试试这样的:

    server {
    
      [...]
    
      root /path/to/public/folder;
    
      [...]
    
      location / {
        # Serve static files or forward to passenger
        try_files $uri $uri.html @passenger
      }
    
      location @passenger {
        passenger_enabled on;
        ...
      }
    }
    

    【讨论】:

    • 嗯,passenger 不监听端口,nginx 使用 unix 套接字连接到 passenger。我现在看到了5个。但我怀疑它们可以以这种方式使用。看看基本的nginx/passenger 设置,我添加到我的问题中。此外,使用ifbad practice 并且尽可能避免使用。
    • 好吧,看来它有效。我想知道我为什么不检查这种方式来设置它......或者是我犯了一个错误并最终认为它没有好处......无论如何,谢谢。
    • 关于服务index.htmlnginxindex 指令,默认值为index.html。所以$uri/index.html 中的try_files 是多余的。
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 2012-03-26
    • 2020-10-28
    • 1970-01-01
    • 2020-03-26
    • 2019-04-02
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多