NGINX als Caching Proxy
NGINX kann wie der Varnish oder Squid Proxy ebenfalls als Caching Proxy für das Ausliefern von Webseiten verwendet werden. Ich gehe hier von einer bestehenden Grundkonfiguration des NGINX aus, der bereits als Reverse Proxy fungiert. Eine Anleitung wie man einen Reverse Proxy mit NGINX einrichtet findet ihr hier:
Konfiguration
Um die Konfiguration für alle virtual hosts gleich zu haben und die Konfiguration zu vereinfachen habe ich eine include Datei angelegt:
includes/proxy_cache.conf
proxy_cache_revalidate on; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; proxy_cache_background_update on; proxy_cache_lock on; add_header X-Cache-Status $upstream_cache_status; proxy_ignore_headers Cache-Control; proxy_cache_valid 200 302 30m; proxy_cache_valid 301 1h; proxy_cache_valid 502 10s; proxy_cache_valid any 10m;
Im vhost selbst muss dann noch folgendes eingefügt werden:
www.domain.tld.conf
# create cache proxy_cache_path /var/cache/nginx/cache_NAME levels=1:2 keys_zone=NAME_cache:10m max_size=10g inactive=60m use_temp_path=off; ... server { listen 443 ssl http2; ... location / { proxy_pass http://127.0.0.1:8092; ... # include caching in location proxy_cache NAME_cache; include /etc/nginx/conf.d/includes/proxy_cache.conf; ... } ...
Testen
Um zu testen ob es einen Performance Gewinn bringt, also besser gesagt ob die Webseite schneller ausgeliefert wird, können die folgenden beiden Webseiten verwendet werden.