Sunday, September 25, 2016

Re: nginx configuration to cache all endpoints but one

Hi Hashmi,

thank you for your suggestion.

I tried to set proxy_pass for the location I don't want to cache, but I don't see caching working properly on my browser.

Could you give a look?
I will attach a mockup of settings,may you want to comment or edit it there so that is more readable to me and also other people?

I want to cache all /api location, except /api/search

In attachment what I tried (I removed from settings things not relevant to this).

thank you,
Luigi





Il giorno venerdì 23 settembre 2016 21:45:45 UTC+2, M Hashmi ha scritto:
Create a separate block to exclude certain endpoint above others. 

You can also try following approach.

Regrads,
Mudassar

On Fri, Sep 23, 2016 at 12:26 PM, gg4u <luigi...@gmail.com> wrote:
Hello,

I want to cache all api endpoints except of one: /api/search endpoint.
Do I need to specify settings for each of the endpoints?

My configuration use nginx as server on port 8000 and port 80 as virtual proxy server.
Please not I removed settings not related to question to minify the post!

server {
listen 8000 default_server;

# Set Cache for my Json api
                # I want to cache everything but /api/search endpoint
location ~* \.(?:json)$ {
 expires 1M;
 access_log off;
 add_header Cache-Control "public";
}

           
location /api {
include uwsgi_params;
uwsgi_pass unix:/var/www/awesome3-gamma/app.sock;
allow [MY DNS];
deny all;
}
}



# Set cache dir
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";

# Virtualhost/server configuration
server {
listen   80  default_server;

# here I cache /api
        # how to avoid caching /api/search ?
        
location /api {
add_header X-Proxy-Cache $upstream_cache_status;
proxy_cache my_zone;
proxy_cache_use_stale updating;
proxy_cache_lock on;
        proxy_cache_valid 30d;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
          proxy_pass [my site route api]
}
}


I am looking at:

tried with following block on server listening on port 8000

location /api/search {      expires off;  }

but got error 500.

Must it go before /api location, afterwards, or it does not matter the order?
Any idea of what I am missing ?

I would like to avoid specify same settings for all API endpoints

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/2a459135-89fa-45d5-8b4e-79b5377c11a8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/d0ec5cdd-7fb0-43e5-aaa6-5922fd266c36%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment