proxy_cache_path /var/cache/nginx/ levels=1:2 keys_zone=my_cache:10m max_size=24g inactive=48h use_temp_path=off; server { listen 10.42.0.1:8888 default_server; listen 127.0.0.1:8888 default_server; listen [::]:8888 default_server; resolver 8.8.8.8; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; add_header X-GG-Cache-Status $upstream_cache_status; proxy_cache my_cache; location /cache_gitlab_artifacts { internal; # Gitlabs http server puts everything as no-cache even though # the artifacts URLS don't change. So enforce a long validity # time and ignore the headers that defeat caching proxy_cache_valid 200 48h; proxy_ignore_headers Cache-Control Set-Cookie; include snippets/uri-caching.conf; } location /cache { # special case gitlab artifacts if ($arg_uri ~* /.*gitlab.*artifacts(\/|%2F)raw/ ) { rewrite ^ /cache_gitlab_artifacts; } # Set a really low validity together with cache revalidation; Our goal # for caching isn't to lower the number of http requests but to # lower the amount of data transfer. Also for some test # scenarios (typical manual tests) the file at a given url # might get modified so avoid confusion by ensuring # revalidations happens often. proxy_cache_valid 200 10s; proxy_cache_revalidate on; include snippets/uri-caching.conf; } }