Nginx无法禁用特定URI的keepalive

时间:2014-09-09 18:19:58

标签: nginx mobile-safari uwsgi pipelining

移动版Safari客户端会向我们的服务器发出多个重复的GET请求,我认为这是由于流水线操作:Safari Sends Two HTTP Req. Same Time/Socket

由于我们的端点不是幂等的,因此我们遇到了问题,因为其中一个请求将失败并且客户端会出现不稳定的行为。

我试图在Nginx中仅为一个端点禁用keepalive。有任何想法吗?下面给出了一个nginx 404错误,日志显示nginx正在尝试访问文件系统位置:" / usr / share / nginx / html / duplicateget"用"没有这样的文件或目录"对于特殊端点/重复项。 (我称之为重复作为例子)

location / {
    ssi off;
    autoindex off;

    include uwsgi_params;
    uwsgi_param   Host               $host;
    uwsgi_param   X-Real-IP          $remote_addr;
    uwsgi_param   X-Forwarded-For    $proxy_add_x_forwarded_for;
    uwsgi_param   X-Forwarded-Proto  $http_x_forwarded_proto;

    uwsgi_pass cluster;

    location /duplicateget {
        keepalive_timeout 0;
    }
}

1 个答案:

答案 0 :(得分:0)

不幸的是,这在nginx中是不可能的。我们在全局设置时不再看到重复的请求:

keepalive_timeout 0;

Out上游负载均衡器使用haproxy而没有SSL终止,因此客户端可能会以奇怪的方式响应这一点,而我们在幕后的nginx配置行为奇怪。

长话短说,仍然困惑!