Nginx + Phusion Passenger try_files

时间:2013-09-16 18:47:52

标签: ruby-on-rails ruby nginx passenger

我正在使用Passenger 4.0.17的开源版本,并试图从文档中辨别出一些我不清楚的行为。我希望有人可以提供帮助。

这样做有什么区别:

server {
    listen         443;
    server_name    www.example.com;

    root           /path/to/my/app/public;

    location / {
        passenger_enabled      on;
        rails_env              production;
        # etc. ....
    }

}

这样做了吗?

server {
    listen         443;
    server_name    www.example.com;

    root           /path/to/my/app/public;

    try_files      $uri @passenger

    location @passenger {
        passenger_enabled      on;
        rails_env              production;
        # etc. ....
    }

}

我一直习惯做第一个,但我开始怀疑第二个是否更好。

我希望在第一个示例中,Passenger worker进程处理每个请求,而在第二个示例中,Passenger worker进程只处理那些Nginx无法提供静态响应的请求。

但是...

在我的脑海中,我想知道Nginx的Passenger模块是否还没有内置智能级别 - 这使得try_files指令变得不必要。 (如果上面使用的try_files指令使得Passenger不能处理Nginx自己可以处理的请求,我希望Passenger文档中已经涵盖了这一点,对吧?但是根本没有提到它。)

询问的原因很明显......

如果我可以从Nginx工作进程提供静态内容而不必同时使用Passenger工作进程,那些Passenger进程(占用更多内存并且效率较低)将可以自由处理他们真正需要处理的请求只需少量工人,我就能获得更多的收益。

再次......我根本无法看到文档中的内容。来自知情人士的任何信息都将不胜感激!

1 个答案:

答案 0 :(得分:1)

Phusion员工在这里回答:

https://groups.google.com/forum/#!topic/phusion-passenger/nDkYVJhYkuw

简短版本:它们功能相同。