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

Posted

技术标签:

【中文标题】乘客不为服务器块内的位置块工作【英文标题】: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)?

【问题讨论】:

【参考方案1】:

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

来自Phusion Passenger users guide:

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

【讨论】:

谢谢,我会再试一次。我以为我已经尝试过了,但它不起作用,但也许我只是做错了什么。

以上是关于乘客不为服务器块内的位置块工作的主要内容,如果未能解决你的问题,请参考以下文章

工作总结 错误 using 块缺少结束字符“}”。请确保此块内的所有“{”都有匹配的“}”字符,并且任何“}”都不会解释为标记。

如何使用 Google Vision Api 检测块内的所有文本

描述块内的 jest.setTimeOut() 是不是仅将超时应用于描述块内的测试

访问块内的 C 块数组

完成块内的 UIViewPropertyAnimator 状态?

内联块内的文本选择,中间没有空格