乘客不在服务器块内的位置块工作

时间:2014-02-10 00:38:34

标签: ruby-on-rails configuration nginx passenger

我在我的nginx服务器上配置了Passenger,以便从特定域提供Rails应用程序。

我的应用程序需要一个特定的路径(/works),不要在60秒后超时,因为上传文件需要一段时间,我怀疑超时是否过早发生。我想用proxy_connect_timeout来解决问题。

我尝试使用特定于该路径的位置块来增加超时,但它会导致/works(或任何子路径)的每个请求都产生404.

server {
    listen 80;
    server_name myserver.com;
    root /path/to/my/app/public;
    passenger_enabled on;

    location /works {
        proxy_connect_timeout 300s;
    }
}

这是error.log中的条目:

  

2014/02/10 04:30:31 [错误] 9579#0:* 4“/ path/to/my/app/public/works/index.html”未找到(2:没有此类文件或目录),客户端:0.0.0.0,服务器:myserver.com,请求:“GET / works / HTTP / 1.1”,主机:“myserver.com”

从我可以从该条目中收集到的内容,它似乎是在公开,好像它不知道它应该将请求传递给Rails。我也试过从那个位置阻止乘客,但没有运气。


我如何让它工作?是否还有一种方法可以使位置块仅作用于/works而不是任何子路径(例如/works/1)?

1 个答案:

答案 0 :(得分:1)

您必须在每个位置块中重新指定passenger_enabled

来自Phusion Passenger users guide:

  

使用location块时,您必须在每个passenger_enabled块中重新指定要启用Phusion Passenger的location。这是因为默认情况下每个location块都会关闭passenger_enabled