4

我正在使用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 工作进程处理每个请求,而在第二个示例中,Passenger 工作进程仅处理 Nginx 无法为其提供静态响应的那些请求。

但...

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

问的原因很明显...

如果我可以从 Nginx 工作进程中提供静态内容,而不必同时使用两个Passenger 工作进程,那么那些Passenger 进程(它们占用更多内存并且相比之下效率较低)将可以自由处理他们真正需要处理的请求,我'只需少量工人,我的钱就会物有所值。

再一次......我根本看不到文档在哪里涵盖了这一点。任何知情人士的信息将不胜感激!

4

1 回答 1

2

Phusion 员工在此回答:

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

简短版本:它们在功能上是等效的。

于 2013-09-16T21:04:53.537 回答