NGINX als Caching Proxy

Aus Laub-Home Wiki

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.

Quellen