В1. Вы настроили nginx кэшировать тело POST-запроса, но на любое тело отдаётся закэшированный результат от первого запроса?
О1. Вам нужно использовать $request_body в proxy_cache_key. Например, так: proxy_cache_key "$request_uri\n$request_body";
В2. На запросы с большим (десятки кб) телом вы получаете 500 Internal Server Error
?
О2. Вам нужно задать временную директорию для сохранения тела запроса. Например, так: client_body_temp_path /tmp/nginx/body_temp_cache 1 2;
В3. Теперь на большие запросы с разным телом отдаётся закэшированный результат первого запроса?
О3. Вы можете прочитать историю целиком, но если в кратце, то если дело дошло до сохранения тела на диск, то в $request_body оказывается пустота. Зато в $request_body_file оказывается путь к файлу и такие запросы можно пустить в обход кэша: proxy_no_cache $request_body_file;
Чтобы увеличить размер тела для которого кэширование будет выполняться, нужно поправить два параметра: client_body_buffer_size 64k; proxy_buffer_size 64k;
Кэшируйте и процветайте!
@kerrigan неисповедимы пути хётворка
@kerrigan чтобы десятки килобайт данных в GET-запрос не пихать
@kerrigan нет, json
@komar да, пизда и инвалидация, но поскольку на эти порты никто кроме меня постучаться не может, то всё заебись