This is an internal documentation. There is a good chance you’re looking for something else. See Disclaimer.

Nginx Caching

What data is cached?

Nginx uses the Cache-Control, Expires and Pragma headers (in that order) to determine if and for how long a resource may be cached.

The HTTP/1.1 standard pretty clearly explains when an entry may be cached. Our setup adheres to this standard.

How do I see if a resource was cached by Nginx?

Search for the X-Cache header on the response. (See screenshot below.)

You’ll usually see one of these values [1]:




Content has been served from cache.


Content has not been served from cache.


Content has been served from cache after revalidating with Nice. Nice returned code 304 — not modified — as result of If-Modified-Since or If-Match being included in the request.


Network tab in Inspector

Bypassing Cache

Curl can be used to bypass the cache and fetch a resource from Nice directly.

Example fetching from Nice2 directly:

oc project ${PROJECT}
oc exec -c nginx dc/nice -- curl -vSL -H 'Host:' -H 'X-Forwarded-Proto: https' http://localhost:8080/example

Nice is reachable at localhost:8080 while Nginx is on localhost:8081.

HTTP requests are redirected to their HTTPS equivalent by OpenShift and Nginx will never see such requests.

View Cached Resource

Cache is stored in /var/cache/nginx/proxy_cache. You can use grep to find the cache item belonging to like this:

oc project ${PROJECT}
# Note the omission of '//'
oc exec -c nginx dc/nice -- grep -Pr ''

Fetch cache file:

oc exec -c nginx dc/nice -- cat ${PATH}