Nginx Cache

Bildschirmfoto von 2020-01-23 07-43-04.png

Abstrakt

Im EGOCMS Standard Stack verwenden wir nun schon seit mehreren Jahren den Webserver Nginx. Dieser zeichet sich durch die schnelle Verarbeitung von statischen Seiten aus.

Außerdem lässt er sich als Proxy Cache verwenden. Hierfür muss die Konfiguration der fastcgi Einstellung angepasst werden. Der Nginx wertet dann die Header Angaben von EGOCMS für das Caching aus.

Da EGOCMS nach einer Anmeldung prinzipiell über den HTTP Header das Caching verbietet, landen im Nginx nur Seiten, ohne Ansichtsberechtigung.

Da EGOCMS über die Freigabedaten aller Seiten Bescheid weiß, wird auch der HTTP Expires Header korrekt gesendet. Nur wenn nach dem Caching eine Seite geändert wird, wird diese nicht direkt ausgegeben. Hierfür muss über einen Cron das Cache Verzeichnis regelmäßig geleert werden.

EGOCMS V18.8 kann hierfür den Nginx Cache direkt löschen.

In V20 wird das Leeren des Caches auf Mandanten- und Sprachebene möglich sein.

Konfiguration

EGOTEC Debian / Ubuntu Stack

Benutzen Sie unsere Standard Debian/Ubuntu Installation aus deb.egotec.com, werden die Einstellungen automatisch aktualisiert. Sie müssen diese nur noch aktivieren.

Das Paket egotec-server-cms-minimal enthält die Konfiguration.

In der /etc/nginx/egocms.conf muss der /rewrite.php Eintrag angepasst werden. Hier einfach den Kommentarhash vor fastcgi_cache egocms; entfernen.

komplette Konfiguration

Folgende Dateien müssen angepasst werden.

In der /etc/nginx/egocms.conf muss der /rewrite.php Eintrag angepasst werden.

location /rewrite.php { fastcgi_cache egocms; add_header X-Cache-nginx $upstream_cache_status; include php.conf; }

Anschließend muss für jeden Mandanten resp. Domainkonfiguration, in dem die vorherige egocms.conf inkludiert wird, meist im Verzeichnis /etc/nginx/sites-available/, die fastcgi Zeilen hinzugefügt werden.

fastcgi_cache_path /usr/share/nginx/egocms/var/cachenginx levels=1:2 keys_zone=egocms:10m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_methods GET; fastcgi_ignore_headers Set-Cookie; server { listen 80 default_server; server_name localhost; set $pool egocms; include egocms.conf; include egocms-enabled/*.conf; } server { listen 443 ssl http2 default_server; server_name localhost; ssl_certificate /etc/nginx/ssl/localhost.crt.pem; ssl_certificate_key /etc/nginx/ssl/localhost.privkey.pem; set $pool egocms; include egocms.conf; include egocms-enabled/*.conf; }