我在我的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
)?
答案 0 :(得分:1)
您必须在每个位置块中重新指定passenger_enabled
。
来自Phusion Passenger users guide:
使用
location
块时,您必须在每个passenger_enabled
块中重新指定要启用Phusion Passenger的location
。这是因为默认情况下每个location
块都会关闭passenger_enabled
。