Comments (8)
Your website varies the response using the request IP.
That setup doesn't go well with a cache in the proxy.
The right way to do this is to map the request IP to a request Header before srcache handles the request, and Vary the response upon that header.
- Request:
IP: a.b.c.d
host: domain.com
Accept: text/html - Geolocation nginx plugin (using e.g. ngx_http_geoip_module)
IP: a.b.c.d
host: domain.com
Accept: text/html
X-ClientCountry: France - Srcache:
Here you should build the request key using X-ClientCountry header - Application:
response.append('X-ClientCountry', 'Actual detected country')
response.append('Vary', 'X-ClientCountry') - Srcache:
Build store key using response X-ClientCountry header
from srcache-nginx-module.
I wrote Actual detected country because the Country detected by geoip might not be the one you actually choose in the application. For example you might map 'FR' and 'ES' to 'EU' in the application, so you have to tell the cache (as done above) to set its store key accordingly.
from srcache-nginx-module.
Thank you for replying, I understand that solution but I don't know how to build store key using response X-ClientCountry header.
Could you give more information?
from srcache-nginx-module.
It's great if you give me an example
from srcache-nginx-module.
From the documentation example (assuming you're using X-Client-Country header)
more_set_headers 'X-Country-Code: $geoip_city_country_code3';
set $fetchKey "$geoip_city_country_code3-$uri?$args";
set $storeKey "$sent_http_x_client_country-$uri?$args";
srcache_fetch GET /memc $fetchKey;
srcache_store PUT /memc $storeKey;
Cool huh ?!?
from srcache-nginx-module.
set $key "example.com_page:https$http_cf_ipcountry$request_method$host$request_uri";
I'm using Cloudflare so that's my config and it's worked =))))
Thank you so much :D
from srcache-nginx-module.
Cool ! If you're using Cloudflare then yes, there is already a http header available, so indeed there is no need to set one up.
You might want to close this issue...
from srcache-nginx-module.
Oh, I forgot it
too much focus on coding =))
from srcache-nginx-module.
Related Issues (20)
- can't use srcache_store twice in the same location block HOT 3
- Directives srcache_store_pass_header didn't work HOT 2
- srcache_store_min_size option missing
- $srcache_store_status always shows BYPASS HOT 5
- srcache_fetch_skip doesn't follow the value changed by access_by_lua HOT 3
- X-Cached header does not appear in the response for 404 status code
- Test cases failing on rhel 7.6 ppc64le - Errors host not found in upstream "agentzh.org" HOT 3
- skip caching basic auth HOT 4
- Reverse proxy with caching is not working.
- srcache_store response hangs with request body when used with ngx.req.get_body_data()
- Always get fetch MISS and store BYPASS when using proxy_pass HOT 1
- ngx.redirect 307 makes srcache_fetch fail HOT 3
- [help]About whether a subrequest can be nonblocked
- How to cache terabytes of data HOT 1
- Subrequest to /redis-store failing - rc=403
- How to measure cache hits/misses
- Nginx 1.23.0 header changes
- "srcache_default_expire" directive invalid value" in when using "ms" (milliseconds)
- In function ‘ngx_http_srcache_response_no_cache’ HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from srcache-nginx-module.