How to force nginx to cache HTTP POST response for few seconds
Igor Sysoev
igor at sysoev.ru
Thu Sep 15 05:49:56 UTC 2011
On Thu, Sep 15, 2011 at 01:43:38AM -0400, qzpmwo wrote:
> Hi everybody,
>
> I'm a newbie with nginx and would like to ask your help. On potentially
> very high loaded site I would like to cache response to the HTTP POST
> for the few seconds. Works perfectly for GETs, but...
>
> nginx version: nginx/0.8.54
>
> Please see below my config:
>
> proxy_cache_path /tmp/nginx levels=2:2:2 keys_zone=small:1m inactive=1m
> max_size=10m;
>
> server {
>
> log_format main '$remote_addr $host $remote_user [$time_local]
> "$request" $status $body_bytes_sent "$http_referer"
> "$http_user_agent" "$gzip_ratio"';
>
> access_log /var/log/nginx/test_server.access.log main buffer=32k;
> error_log /var/log/nginx/test_server.error.log info;
>
>
> listen 80;
>
> root /var/www/html/nginx;
> index index.html index.htm;
>
> location / {
> try_files $uri @apache_backend;
> }
>
> ### location ~ \.php$ {
> ### proxy_pass http://127.0.0.1:88;
> ### }
>
> location @apache_backend {
> proxy_pass http://127.0.0.1:88;
> proxy_cache small;
> proxy_cache_valid 5s;
> proxy_cache_key $uri;
> proxy_cache_use_stale updating;
> add_header X-Cached $upstream_cache_status;
> }
> }
>
>
> Any help/advices will be appreciated.
You should upgrade to at least 0.8.55.
If POST request body is small enough, then you can use:
location @apache_backend {
...
proxy_cache_methods POST;
proxy_cache_key "$uri|$request_body";
client_max_body_size 1k;
}
--
Igor Sysoev
More information about the nginx
mailing list