仅当url中包含特定参数时,Nginx才设置proxy_send_timeout

时间:2014-03-07 13:47:32

标签: nginx timeout

我是nginx的新手并且现在正在学习它:),我需要一些set proxy_send_timeout的帮助,我需要设置这个,如果url在代理中有'stime'这就是我正在做的事情:

if ($arg_stime != ""){
  proxy_send_timeout 15;
  proxy_read_timeout 15;
}

但是nginx没有启动并出现以下错误:

4901#0:default.conf中不允许使用“proxy_send_timeout”指令

任何建议,谢谢

祝你好运

Sajid

1 个答案:

答案 0 :(得分:3)

您无法在proxy_read_timeout内使用proxy_send_timeout / if,但有解决方法。

以下是示例代码:

server {
    # ...

    error_page 555 = @normal;
    error_page 556 = @stime;

    location / {
        if ($arg_stime != '') {
            return 556;
        }
        return 555;
    }

    location @normal {
        proxy_pass ...;
        # ...other proxy directives...
    }

    location @stime {
        proxy_pass ...;
        # ...other proxy directives...
        proxy_send_timeout 15s;
        proxy_read_timeout 15s;
    }
}

我们使用“If is Evil”中的提示来选择location将继续我们的请求。