【问题标题】:Passenger not working for location block inside server block乘客不为服务器块内的位置块工作
【发布时间】:2014-03-07 04:42:32
【问题描述】:

我在我的 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)?

【问题讨论】:

    标签: ruby-on-rails configuration nginx passenger


    【解决方案1】:

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

    来自Phusion Passenger users guide:

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

    【讨论】:

    • 谢谢,我会再试一次。我以为我已经尝试过了,但它不起作用,但也许我只是做错了什么。
    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2017-12-28
    • 2015-07-15
    • 2017-03-04
    • 2015-01-23
    相关资源
    最近更新 更多