Добрый день.
Я использую Nginx 1.9.5.
В конфигурационном файле есть секция для кэширования статического контента в которой жётко прописаны шаблоны url для кэширования (20 минут).
Вся динамика отдаётся апстримами. Выбор апстрима осуществляется на основе анализа заголовка X-Forwarded-Proto.
Если X-Forwarded-Proto = http, то передаём на http://upstream1, если https то на https://upstream2
Апстрим обрабатывает запросы и отвечает либо 200 кодом, либо 302 в зависимости от его внутренней логики.
Недавно я столкнулся с единичным случаем следующей проблемы:
Неожиданно nginx стал возвращать клиентам на запрос POST https://my.domain/test вместо 302 кода с https://my.domain/next_step 302 код c редиректом на http://my.domain/test. Данные запросы всегда проксировались на апстримы, и уже они отвечали. В этом же случае запроса к апстримам не происходило, поле $upstream_addr содержало значение "-". Через 18 часов ситуация нормализовалась.
Создалось ощущение что NGINX просто отдавал ответ из кэша, хотя для данного локейшена кэш не используется, да и для POST запросов он не возможен. Проблема была обнаружена уже постфактум.
Может кто-то сталкивался с чем-то подобным.