2014-09-09 2 views
0

Мобильный клиент Safari выполнит несколько дублирующих запросов GET на наш сервер, я думаю, что это связано с конвейерной обработкой: Safari Sends Two HTTP Req. Same Time/Socket.Nginx не может отключить keepalive для определенного URI

Поскольку наша конечная точка не является идемпотентной, у нас есть проблемы с этим, так как один из запросов потерпит неудачу, и клиент получит неустойчивое поведение.

Я пытаюсь отключить keepalive только для одной конечной точки в Nginx. Есть идеи? Ниже приведена ошибка nginx 404, и журнал показывает, что nginx пытается получить доступ к расположению файловой системы: «/ usr/share/nginx/html/duplicateget» с «Нет такого файла или каталога» для специальной конечной точки/duplicateget. (Я назвал его 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; 
    } 
} 

ответ

0

К сожалению, это невозможно в nginx. Мы уже просто не видят повторяющиеся запросы, когда мы устанавливаем это глобально:

keepalive_timeout 0; 

вверх по потоку балансировки нагрузки используйте HAProxy без прекращения SSL, поэтому клиенты могут реагировать на это странным образом, и наш Nginx конфигурации за кулисами действует странно.

длинный рассказ короткий, все еще смущенный!

Смежные вопросы