SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
www.mittwald.de
TYPO3 & Varnish
Konfiguration optimieren & Fehler vermeiden
§ Alter: 42 Jahre
§ Wohnort: Lübbecke
§ Certified TYPO3 Integrator
§ Re-Zertifiziert 2015
§ Seit 2003 als Dozent für TYPO3-Schulungen festangestellt
Oliver Thiele
Dozent bei Mittwald CM Service
TYPO3 & Varnish2
Forward & Reverse Proxy
Wo wird etwas gecached?
TYPO3 & Varnish3
Reverse Proxy
Warum sollten wir einen Reverse Proxy nutzen?
§ Seiten werden sehr viel schneller ausgeliefert
§ Weniger Last auf dem Webserver
§ Höhere Ausfall-Sicherheit
§ Besseres Ranking bei Google durch das schnellere Ausliefern der
Webseiten
Präsentationstitel4
Probleme durch Caching?
Häufige Probleme sind:
§ Es werden für alle Besucher zu alte Inhalte ausgeliefert.
§ HTTPS-Verbindungen, bei denen die SSL-Verschlüsselung bis zum
Webserver reicht, können nicht zwischengespeichert werden.
§ Inhalte, die je nach eingeloggter Person unterschiedlich sind, dürfen
nicht gecacht werden (außer, es gibt für jeden Login einen separaten
Cache).
§ Bei falscher Konfiguration könnten Personen Inhalte sehen, die nicht
für sie gedacht sind.
§ Redakteure in TYPO3 könnten ihre Änderungen nicht sehen.
Präsentationstitel5
Was verhindert das Caching im Varnish?
§ Sessions / Cookies
§ no_cache=1 (GET, POST, TypoScript, …)
§ Die ungecachten cObjects USER_INT und COA_INT
§ Auslieferung unterschiedlicher Inhalte je nach Environment-Variablen
wie IP, User-Agent
§ SSL-Verschlüsselung
Präsentationstitel6
Sessions
Cookies, die bei TYPO3 gesetzt werden :
§ fe_typo_user
Erst in der aktuellen Version nur nach Anmeldung
gesetzt
§ be_typo_user
Ein einziger Aufruf vom Backend-Anmeldeformular
reicht, um das Cookie zusetzen
§ Google Analytics
§ Piwik
§ ...
Präsentationstitel7
no_cache
Einstellung in TYPO3
Wird gesetzt über:
§ GET/POST-Parameter
§ TypoScript Setup Einstellung
config.no_cache=1
bzw.
page.config.no_cache=1
§ Seiten-Eigenschaften
Präsentationstitel8
USER_INT & COA_INT
Ungecachte Content Objects (cObjects)
§ Diese Content-Objekte deaktivieren die Cache-Control-Header für
die Seite, die der Varnish benötigt, um Seiten zu cachen.
§ Vorsicht bei Verwendung von *_INT-Objekten bei der
FLUIDTEMPLATE Eigenschaft variables! Es reicht die Definition eines
*_INT-Objektes und es wird für sämtliche Backend-Layouts der
Cache deaktiviert.
§ Besser AJAX verwenden oder in einem BE-Layout mit
<f:cObject typoscriptObjectPath="lib.myUncachedElement“>
arbeiten! Hier werden nur die Seiten ungecacht ausgeliefert, in
denen über das Argument typoscriptObjectPath ein *_INT-Objekt
aufgerufen wird.
Präsentationstitel9
Einstellungen im TYPO3 Install-Tool
§ ['SYS']['reverseProxyIP'] = '127.0.0.1'
Hier muss die Adresse vom Varnish-Server eingetragen werden.
§ ['SYS']['reverseProxyHeaderMultiValue'] = 'first | last'
Mit dieser Änderung wird die erste/letzte X-Forwarded-For IP im
TypoScript abrufbar über
stdWrap.data = getIndpEnv:REMOTE_ADDR
§ ['FE']['dontSetCookie'] = 1
Muss nicht mehr zwingend eingetragen werden. TYPO3 setzt in
aktuellen TYPO3-Versionen das FE-Cookie nur noch bei Bedarf.
§ [FE][disableNoCacheParameter] = 0/1
Optimal wäre „0“, aber dann darf keine Extension
<input type="hidden" name="no_cache" value="1">
im Formular verwenden!
Präsentationstitel10
www.mittwald.de
TYPO3 Backend & TypoScript
Einstellungen optimieren
TypoScript
Setup
config {

 sendCacheHeaders = 1

 cache_period = 86400
}
Mit diesen Zeilen werden die Cache-Control-Header gesendet, die ein Reverse-Proxy
benötigen, um die HTML-Seiten cachen zu können.
Präsentationstitel12
TYPO3 Seiteneigenschaften
Benutzeranmeldung deaktivieren?!? Was ist das?!?
Präsentationstitel13
Anmeldeverhalten
Steuert die Ausgabe der Cache-Control-Header
§ Benutzeranmeldung freigeben (Standard)
Die Seite wird nicht gecacht, wenn es einen Login gibt.
§ Benutzeranmeldung deaktivieren
Die Seite kann von einem Proxy gespeichert werden. Das Cookie fe_typo_user wird nicht
mehr ausgegeben. Sowohl eingeloggte als auch ausgeloggte Personen erhalten die selbe
Seite.
§ Anmeldung für Benutzer freigeben, aber für Benutzergruppen deaktivieren
Hier könnte ein spezieller Header ausgegeben werden, mit dem man dem Varnish mitteilt,
dass eine zweite Version der Seite zwischengespeichert werden soll.
§ Anmeldung wieder freigeben
Die Seite kann von einem Proxy nicht mehr gespeichert werden. Das Cookie fe_typo_user
wird wieder ausgegeben, auch wenn auf einer übergeordneten Seite „Benutzeranmeldung
deaktivieren“ ausgewählt war.
Präsentationstitel14
www.mittwald.de
Nginx
Anpassungen
nginx Logfiles optimieren
IP des Clients anstatt des Servers loggen
Problem:
Normalerweise werden die IP-Adressen von einem Besucher im
access.log des Webservers gespeichert. Mit einem vorgeschalteten
Varnish-Server ist die mitgeloggte IP-Adresse immer die vom Varnish.
Lösung:
Der Varnish-Server gibt die IP des Besuchers an den Webserver per X-
Forwarded-For Header. Dieser muss dann geloggt werden.
Präsentationstitel16
nginx Logfiles optimieren
Webserver
§ /etc/nginx/nginx.conf (Sektion: http) oder
Virtual-Host Datei
(Sektion: server)
§ set_real_ip_from 127.0.0.1; # IP of your
varnish/proxy

§ real_ip_header X-Forwarded-For; # Header from
varnish
§ /etc/varnish/default.vcl
Wenn das Loggen noch nicht klappt, im vcl_recv Abschnitt
hinzufügen:
set req.http.X-Forwarded-For = client.ip;
Präsentationstitel17
www.mittwald.de
HTTPS mit Varnish
SSL-gesicherte Verbindungen cachen
Reverse Proxy Pound
als https-Wrapper nutzen
§ Pound ist ein Reverse-Proxy, ein Lastverteiler und ein HTTPS-Wrapper.
§ Pound kann Anfragen auf Regeln basierend an einen oder mehrere
Webserver weiterleiten.
§ Pound kann Sitzungen erkennen, zum Beispiel durch Cookies oder
Anmelde-Zeichenfolgen.
§ Eine einmal erkannte Sitzung wird in der Folge immer an den gleichen
Webserver geleitet.
§ Man kann Pound als Lastverteiler einsetzen, um eingehende Anfragen auf
mehrere Webserver zu verteilen und so die Gesamtbelastung zu minimieren.
§ Pound reicht die Anfragen zum größten Teil komplett unverändert durch -
ist dadurch sehr kompatibel.
§ Pound verarbeitet keinerlei Anfragen selbst.
§ Pound ist kein Webcache.
Präsentationstitel19
Reverse Proxy Pound
Präsentationstitel20
Reverse Proxy Pound
Ausschnitt aus der Konfiguration
ListenHTTP
# Address Default: 127.0.0.1, for all use 0.0.0.0
# put your server's public IP address here
Address 0.0.0.0
Port 80
RewriteLocation 0 # Default 1 => infinite loop!
# HeadRemove "X-Forwarded-For“
## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
xHTTP 2
Service
HeadRequire "(Host: vm-typo3.loc|Host: opcache.vm-typo3.loc)"
BackEnd
Address 127.0.0.1
Port 8000
End
End
Service
BackEnd
Address 127.0.0.1
Port 6081
End
End
End
Präsentationstitel21
www.mittwald.de
Varnish-Konfiguration
Anpassen der default.vcl Datei
Varnish-Konfiguration in der default.vcl
Caching prüfen
Zum Zählen der aus dem Cache ausgelieferten Seiten kann dieses
Snippet verwendet werden:
sub vcl_deliver {
if (obj.hits > 0) {

 set resp.http.X-Cache = "Hit (" +
obj.hits + ")";

 } else {

 set resp.http.X-Cache = "MISS";

 }
}
Präsentationstitel23
Varnish-Konfiguration in der default.vcl
Dateien schützen (Abschnitt: vcl_recv)
/**
* Added security, the "w00tw00t" and other attacks are pretty annoying
* so lets block it before it reaches our webserver
* config, backup and other private files are also blocked
*/
if (req.url ~ "^/w00tw00t" ||
req.url ~ "^/phppath/" ||
# req.url ~ "^/pma/" ||
req.url ~ "^/phpMyAdmin" ||
req.url ~ "^/phpmyadmin" ||
req.url ~ "wp-(admin|login|content)" ||
req.url ~ ".inc.php" ||
req.url ~ "^/%70%68%70%70%61%74%68/" ||
req.url ~ ".(bak|backup|conf|log|properties|sql|tar)$" ||
req.url ~ "/Private/" ||
req.url ~
"typo3conf/ext/(.*)/Configuration/(TypoScript|FlexForms|TCA|ExtensionBuil
der)/"
) {
return (synth(403, "Not permitted"));
}
Präsentationstitel24
www.mittwald.de
ESI
Edge Side Includes
Edge Side Includes (ESI)
https://www.varnish-cache.org/docs/4.0/users-guide/esi.html
#!/bin/sh
echo 'Content-type: text/html'
echo ''
date "+%Y-%m-%d %H:%M“
<HTML>
<BODY>
The time is: <esi:include src="/cgi-
bin/date.cgi"/>
at this very moment.
</BODY>
</HTML>
Präsentationstitel26
Edge Side Includes
https://www.varnish-cache.org/docs/4.0/users-guide/esi.html
ESI Aktivierung:
sub vcl_backend_response {
if (bereq.url == "/test.html") {
set beresp.do_esi = true; // Do ESI processing
set beresp.ttl = 24 h; // Sets the TTL on the HTML above
} elseif (bereq.url == "/cgi-bin/date.cgi") {
set beresp.ttl = 1m; // Sets a one minute TTL on
// the included object
}
}
Tipp:
Aktivierung über Header-Daten. Diese könnten in Abhängigkeit zu einer Checkbox
bei den Seiteneigenschaften übermittelt werden.
Präsentationstitel27
Edge Side Includes
https://www.varnish-cache.org/docs/4.0/users-guide/esi.html
esi:remove and <!--esi ... à
<esi:remove>
<a href="http://www.example.com/LICENSE">The
license</a>
</esi:remove>
<!--esi
<p>The full text of the license:</p>
<esi:include src="http://example.com/LICENSE" />
-->
Präsentationstitel28
www.mittwald.de
Hilfreiche Extension vcc
Varnish Cache Control
Hilfreiche Extension „vcc“
Varnish Cache Control
Das Löschen des Varnish-Caches kann über die Extension
„Varnish Cache Control“
mit dem Extension-Key „vcc“ auch über das TYPO3 Backend erfolgen.
Mit der installierten und konfigurierten Extension kann ein Redakteur
eine Seite über einen Klick im Backend aus dem Varnish-Cache löschen.
Präsentationstitel30
www.mittwald.de
Lasttest
mit dem Linux-Tool „siege“
Last-Test
mit und ohne Varnish
Dazu die Config-Dateien so einstellen, dass der Zugriff beim Varnish und Nginx nicht nur über
127.0.0.1 erfolgen kann! Nach dem Test gegebenenfalls wieder zurückstellen!
Test mit Varnish:
siege -b -c 10 -t10s http://domain.tld:6081
Test ohne Varnish:
siege -b -c 10 -t10s http://domain.tld:8000
Präsentationstitel32
Ergebnis des Siege Tests
Ohne Varnish
root@myserver ~ # siege -b -c 10 -t10s "http://dev.oliver-thiele.de:8000"
** SIEGE 3.0.8
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 1086 hits
Availability: 100.00 %
Elapsed time: 9.36 secs
Data transferred: 7.50 MB
Response time: 0.09 secs
Transaction rate: 116.03 trans/sec
Throughput: 0.80 MB/sec
Concurrency: 9.96
Successful transactions: 1086
Failed transactions: 0
Longest transaction: 0.12
Shortest transaction: 0.03
Präsentationstitel33
Ergebnis des Siege Tests
Mit Varnish
root@myserver ~ # siege -b -c 10 -t10s "http://dev.oliver-thiele.de:6081"
** SIEGE 3.0.8
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 95064 hits
Availability: 100.00 %
Elapsed time: 9.37 secs
Data transferred: 656.74 MB
Response time: 0.00 secs
Transaction rate: 10145.57 trans/sec
Throughput: 70.09 MB/sec
Concurrency: 9.66
Successful transactions: 95064
Failed transactions: 0
Longest transaction: 0.57
Shortest transaction: 0.00
Präsentationstitel34

Contenu connexe

Tendances

Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
inovex GmbH
 
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Patrick Lauke
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
Dirk Ginader
 

Tendances (20)

Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Upgrade auf TYPO3 6.2
Upgrade auf TYPO3 6.2Upgrade auf TYPO3 6.2
Upgrade auf TYPO3 6.2
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
 
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
 
5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
 
Node.js
Node.jsNode.js
Node.js
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
PHP Dependency und Paket Management mit Composer
PHP Dependency und Paket Management mit ComposerPHP Dependency und Paket Management mit Composer
PHP Dependency und Paket Management mit Composer
 
OSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
OSDC 2011 | FAI - Fully Automatic Installation by Thomas LangeOSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
OSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
 
Web 2.0 Mit Der Yahoo User Interface Library
Web 2.0 Mit Der Yahoo User Interface LibraryWeb 2.0 Mit Der Yahoo User Interface Library
Web 2.0 Mit Der Yahoo User Interface Library
 
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
 
Shell Fu for Developers
Shell Fu for DevelopersShell Fu for Developers
Shell Fu for Developers
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)
 
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
Schöne neue Welt von HTML5 - WebTech 2010 Mainz 12.10.2010
 
PHP 5.3 - da war doch was?
PHP 5.3 - da war doch was?PHP 5.3 - da war doch was?
PHP 5.3 - da war doch was?
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 
Skalieren einer Web Anwendung
Skalieren einer Web Anwendung Skalieren einer Web Anwendung
Skalieren einer Web Anwendung
 

En vedette

Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...
Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...
Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...
Tns-Ilres
 
Html_website_Design_Mockup
Html_website_Design_MockupHtml_website_Design_Mockup
Html_website_Design_Mockup
Donna Moulton
 
Eloisa, la cartonera
Eloisa, la cartoneraEloisa, la cartonera
Eloisa, la cartonera
mcarning
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
elfrijol
 
Trafic
TraficTrafic
Trafic
pprem
 

En vedette (20)

Kundenzufriendenheit im E Commerce - Bernd Ernst
Kundenzufriendenheit im E Commerce - Bernd ErnstKundenzufriendenheit im E Commerce - Bernd Ernst
Kundenzufriendenheit im E Commerce - Bernd Ernst
 
Seo proposal
Seo proposalSeo proposal
Seo proposal
 
Combarro Otto Wunderlich
Combarro  Otto WunderlichCombarro  Otto Wunderlich
Combarro Otto Wunderlich
 
Bachlor
BachlorBachlor
Bachlor
 
Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...
Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...
Polit monitor lëtzebuerg_-_rtl_luxemburger_wort_september_2013_volet_4_perspe...
 
Html_website_Design_Mockup
Html_website_Design_MockupHtml_website_Design_Mockup
Html_website_Design_Mockup
 
Eloisa, la cartonera
Eloisa, la cartoneraEloisa, la cartonera
Eloisa, la cartonera
 
Esforse
EsforseEsforse
Esforse
 
Exploracion espacial hoy
Exploracion espacial hoyExploracion espacial hoy
Exploracion espacial hoy
 
Arancha Pintado, parlez-vous français?
Arancha Pintado, parlez-vous français?Arancha Pintado, parlez-vous français?
Arancha Pintado, parlez-vous français?
 
Compromiso
CompromisoCompromiso
Compromiso
 
Diabetes gestacional
Diabetes gestacionalDiabetes gestacional
Diabetes gestacional
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
 
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
 
Trafic
TraficTrafic
Trafic
 
Tabajo sena
Tabajo senaTabajo sena
Tabajo sena
 
11 19 session 47
11 19 session 4711 19 session 47
11 19 session 47
 
Valores
ValoresValores
Valores
 
Planeación SECUENCIAS DIDÁCTICAS BIEN DISEÑADAS
Planeación SECUENCIAS DIDÁCTICAS BIEN DISEÑADASPlaneación SECUENCIAS DIDÁCTICAS BIEN DISEÑADAS
Planeación SECUENCIAS DIDÁCTICAS BIEN DISEÑADAS
 
10 21 session 30
10 21 session 3010 21 session 30
10 21 session 30
 

Similaire à Typo3 und Varnish

HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
Mayflower GmbH
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
schellsoft
 

Similaire à Typo3 und Varnish (20)

Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
Echtes Single Sign-On mit APEX realisieren
Echtes Single Sign-On mit APEX realisierenEchtes Single Sign-On mit APEX realisieren
Echtes Single Sign-On mit APEX realisieren
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
Webanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationWebanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und Administration
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Campixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeCampixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extreme
 
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
 
Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
ANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat AnsibleANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat Ansible
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Wordpress on steroids
Wordpress on steroidsWordpress on steroids
Wordpress on steroids
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
DACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdfDACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdf
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
 

Typo3 und Varnish

  • 1. www.mittwald.de TYPO3 & Varnish Konfiguration optimieren & Fehler vermeiden
  • 2. § Alter: 42 Jahre § Wohnort: Lübbecke § Certified TYPO3 Integrator § Re-Zertifiziert 2015 § Seit 2003 als Dozent für TYPO3-Schulungen festangestellt Oliver Thiele Dozent bei Mittwald CM Service TYPO3 & Varnish2
  • 3. Forward & Reverse Proxy Wo wird etwas gecached? TYPO3 & Varnish3
  • 4. Reverse Proxy Warum sollten wir einen Reverse Proxy nutzen? § Seiten werden sehr viel schneller ausgeliefert § Weniger Last auf dem Webserver § Höhere Ausfall-Sicherheit § Besseres Ranking bei Google durch das schnellere Ausliefern der Webseiten Präsentationstitel4
  • 5. Probleme durch Caching? Häufige Probleme sind: § Es werden für alle Besucher zu alte Inhalte ausgeliefert. § HTTPS-Verbindungen, bei denen die SSL-Verschlüsselung bis zum Webserver reicht, können nicht zwischengespeichert werden. § Inhalte, die je nach eingeloggter Person unterschiedlich sind, dürfen nicht gecacht werden (außer, es gibt für jeden Login einen separaten Cache). § Bei falscher Konfiguration könnten Personen Inhalte sehen, die nicht für sie gedacht sind. § Redakteure in TYPO3 könnten ihre Änderungen nicht sehen. Präsentationstitel5
  • 6. Was verhindert das Caching im Varnish? § Sessions / Cookies § no_cache=1 (GET, POST, TypoScript, …) § Die ungecachten cObjects USER_INT und COA_INT § Auslieferung unterschiedlicher Inhalte je nach Environment-Variablen wie IP, User-Agent § SSL-Verschlüsselung Präsentationstitel6
  • 7. Sessions Cookies, die bei TYPO3 gesetzt werden : § fe_typo_user
Erst in der aktuellen Version nur nach Anmeldung gesetzt § be_typo_user
Ein einziger Aufruf vom Backend-Anmeldeformular reicht, um das Cookie zusetzen § Google Analytics § Piwik § ... Präsentationstitel7
  • 8. no_cache Einstellung in TYPO3 Wird gesetzt über: § GET/POST-Parameter § TypoScript Setup Einstellung config.no_cache=1 bzw. page.config.no_cache=1 § Seiten-Eigenschaften Präsentationstitel8
  • 9. USER_INT & COA_INT Ungecachte Content Objects (cObjects) § Diese Content-Objekte deaktivieren die Cache-Control-Header für die Seite, die der Varnish benötigt, um Seiten zu cachen. § Vorsicht bei Verwendung von *_INT-Objekten bei der FLUIDTEMPLATE Eigenschaft variables! Es reicht die Definition eines *_INT-Objektes und es wird für sämtliche Backend-Layouts der Cache deaktiviert. § Besser AJAX verwenden oder in einem BE-Layout mit <f:cObject typoscriptObjectPath="lib.myUncachedElement“> arbeiten! Hier werden nur die Seiten ungecacht ausgeliefert, in denen über das Argument typoscriptObjectPath ein *_INT-Objekt aufgerufen wird. Präsentationstitel9
  • 10. Einstellungen im TYPO3 Install-Tool § ['SYS']['reverseProxyIP'] = '127.0.0.1' Hier muss die Adresse vom Varnish-Server eingetragen werden. § ['SYS']['reverseProxyHeaderMultiValue'] = 'first | last' Mit dieser Änderung wird die erste/letzte X-Forwarded-For IP im TypoScript abrufbar über stdWrap.data = getIndpEnv:REMOTE_ADDR § ['FE']['dontSetCookie'] = 1 Muss nicht mehr zwingend eingetragen werden. TYPO3 setzt in aktuellen TYPO3-Versionen das FE-Cookie nur noch bei Bedarf. § [FE][disableNoCacheParameter] = 0/1 Optimal wäre „0“, aber dann darf keine Extension <input type="hidden" name="no_cache" value="1"> im Formular verwenden! Präsentationstitel10
  • 11. www.mittwald.de TYPO3 Backend & TypoScript Einstellungen optimieren
  • 12. TypoScript Setup config { 
 sendCacheHeaders = 1 
 cache_period = 86400 } Mit diesen Zeilen werden die Cache-Control-Header gesendet, die ein Reverse-Proxy benötigen, um die HTML-Seiten cachen zu können. Präsentationstitel12
  • 13. TYPO3 Seiteneigenschaften Benutzeranmeldung deaktivieren?!? Was ist das?!? Präsentationstitel13
  • 14. Anmeldeverhalten Steuert die Ausgabe der Cache-Control-Header § Benutzeranmeldung freigeben (Standard) Die Seite wird nicht gecacht, wenn es einen Login gibt. § Benutzeranmeldung deaktivieren Die Seite kann von einem Proxy gespeichert werden. Das Cookie fe_typo_user wird nicht mehr ausgegeben. Sowohl eingeloggte als auch ausgeloggte Personen erhalten die selbe Seite. § Anmeldung für Benutzer freigeben, aber für Benutzergruppen deaktivieren Hier könnte ein spezieller Header ausgegeben werden, mit dem man dem Varnish mitteilt, dass eine zweite Version der Seite zwischengespeichert werden soll. § Anmeldung wieder freigeben Die Seite kann von einem Proxy nicht mehr gespeichert werden. Das Cookie fe_typo_user wird wieder ausgegeben, auch wenn auf einer übergeordneten Seite „Benutzeranmeldung deaktivieren“ ausgewählt war. Präsentationstitel14
  • 16. nginx Logfiles optimieren IP des Clients anstatt des Servers loggen Problem: Normalerweise werden die IP-Adressen von einem Besucher im access.log des Webservers gespeichert. Mit einem vorgeschalteten Varnish-Server ist die mitgeloggte IP-Adresse immer die vom Varnish. Lösung: Der Varnish-Server gibt die IP des Besuchers an den Webserver per X- Forwarded-For Header. Dieser muss dann geloggt werden. Präsentationstitel16
  • 17. nginx Logfiles optimieren Webserver § /etc/nginx/nginx.conf (Sektion: http) oder
Virtual-Host Datei (Sektion: server) § set_real_ip_from 127.0.0.1; # IP of your varnish/proxy
 § real_ip_header X-Forwarded-For; # Header from varnish § /etc/varnish/default.vcl Wenn das Loggen noch nicht klappt, im vcl_recv Abschnitt hinzufügen: set req.http.X-Forwarded-For = client.ip; Präsentationstitel17
  • 19. Reverse Proxy Pound als https-Wrapper nutzen § Pound ist ein Reverse-Proxy, ein Lastverteiler und ein HTTPS-Wrapper. § Pound kann Anfragen auf Regeln basierend an einen oder mehrere Webserver weiterleiten. § Pound kann Sitzungen erkennen, zum Beispiel durch Cookies oder Anmelde-Zeichenfolgen. § Eine einmal erkannte Sitzung wird in der Folge immer an den gleichen Webserver geleitet. § Man kann Pound als Lastverteiler einsetzen, um eingehende Anfragen auf mehrere Webserver zu verteilen und so die Gesamtbelastung zu minimieren. § Pound reicht die Anfragen zum größten Teil komplett unverändert durch - ist dadurch sehr kompatibel. § Pound verarbeitet keinerlei Anfragen selbst. § Pound ist kein Webcache. Präsentationstitel19
  • 21. Reverse Proxy Pound Ausschnitt aus der Konfiguration ListenHTTP # Address Default: 127.0.0.1, for all use 0.0.0.0 # put your server's public IP address here Address 0.0.0.0 Port 80 RewriteLocation 0 # Default 1 => infinite loop! # HeadRemove "X-Forwarded-For“ ## allow PUT and DELETE also (by default only GET, POST and HEAD)?: xHTTP 2 Service HeadRequire "(Host: vm-typo3.loc|Host: opcache.vm-typo3.loc)" BackEnd Address 127.0.0.1 Port 8000 End End Service BackEnd Address 127.0.0.1 Port 6081 End End End Präsentationstitel21
  • 23. Varnish-Konfiguration in der default.vcl Caching prüfen Zum Zählen der aus dem Cache ausgelieferten Seiten kann dieses Snippet verwendet werden: sub vcl_deliver { if (obj.hits > 0) { 
 set resp.http.X-Cache = "Hit (" + obj.hits + ")"; 
 } else { 
 set resp.http.X-Cache = "MISS"; 
 } } Präsentationstitel23
  • 24. Varnish-Konfiguration in der default.vcl Dateien schützen (Abschnitt: vcl_recv) /** * Added security, the "w00tw00t" and other attacks are pretty annoying * so lets block it before it reaches our webserver * config, backup and other private files are also blocked */ if (req.url ~ "^/w00tw00t" || req.url ~ "^/phppath/" || # req.url ~ "^/pma/" || req.url ~ "^/phpMyAdmin" || req.url ~ "^/phpmyadmin" || req.url ~ "wp-(admin|login|content)" || req.url ~ ".inc.php" || req.url ~ "^/%70%68%70%70%61%74%68/" || req.url ~ ".(bak|backup|conf|log|properties|sql|tar)$" || req.url ~ "/Private/" || req.url ~ "typo3conf/ext/(.*)/Configuration/(TypoScript|FlexForms|TCA|ExtensionBuil der)/" ) { return (synth(403, "Not permitted")); } Präsentationstitel24
  • 26. Edge Side Includes (ESI) https://www.varnish-cache.org/docs/4.0/users-guide/esi.html #!/bin/sh echo 'Content-type: text/html' echo '' date "+%Y-%m-%d %H:%M“ <HTML> <BODY> The time is: <esi:include src="/cgi- bin/date.cgi"/> at this very moment. </BODY> </HTML> Präsentationstitel26
  • 27. Edge Side Includes https://www.varnish-cache.org/docs/4.0/users-guide/esi.html ESI Aktivierung: sub vcl_backend_response { if (bereq.url == "/test.html") { set beresp.do_esi = true; // Do ESI processing set beresp.ttl = 24 h; // Sets the TTL on the HTML above } elseif (bereq.url == "/cgi-bin/date.cgi") { set beresp.ttl = 1m; // Sets a one minute TTL on // the included object } } Tipp: Aktivierung über Header-Daten. Diese könnten in Abhängigkeit zu einer Checkbox bei den Seiteneigenschaften übermittelt werden. Präsentationstitel27
  • 28. Edge Side Includes https://www.varnish-cache.org/docs/4.0/users-guide/esi.html esi:remove and <!--esi ... à <esi:remove> <a href="http://www.example.com/LICENSE">The license</a> </esi:remove> <!--esi <p>The full text of the license:</p> <esi:include src="http://example.com/LICENSE" /> --> Präsentationstitel28
  • 30. Hilfreiche Extension „vcc“ Varnish Cache Control Das Löschen des Varnish-Caches kann über die Extension „Varnish Cache Control“ mit dem Extension-Key „vcc“ auch über das TYPO3 Backend erfolgen. Mit der installierten und konfigurierten Extension kann ein Redakteur eine Seite über einen Klick im Backend aus dem Varnish-Cache löschen. Präsentationstitel30
  • 32. Last-Test mit und ohne Varnish Dazu die Config-Dateien so einstellen, dass der Zugriff beim Varnish und Nginx nicht nur über 127.0.0.1 erfolgen kann! Nach dem Test gegebenenfalls wieder zurückstellen! Test mit Varnish:
siege -b -c 10 -t10s http://domain.tld:6081 Test ohne Varnish:
siege -b -c 10 -t10s http://domain.tld:8000 Präsentationstitel32
  • 33. Ergebnis des Siege Tests Ohne Varnish root@myserver ~ # siege -b -c 10 -t10s "http://dev.oliver-thiele.de:8000" ** SIEGE 3.0.8 ** Preparing 10 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 1086 hits Availability: 100.00 % Elapsed time: 9.36 secs Data transferred: 7.50 MB Response time: 0.09 secs Transaction rate: 116.03 trans/sec Throughput: 0.80 MB/sec Concurrency: 9.96 Successful transactions: 1086 Failed transactions: 0 Longest transaction: 0.12 Shortest transaction: 0.03 Präsentationstitel33
  • 34. Ergebnis des Siege Tests Mit Varnish root@myserver ~ # siege -b -c 10 -t10s "http://dev.oliver-thiele.de:6081" ** SIEGE 3.0.8 ** Preparing 10 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 95064 hits Availability: 100.00 % Elapsed time: 9.37 secs Data transferred: 656.74 MB Response time: 0.00 secs Transaction rate: 10145.57 trans/sec Throughput: 70.09 MB/sec Concurrency: 9.66 Successful transactions: 95064 Failed transactions: 0 Longest transaction: 0.57 Shortest transaction: 0.00 Präsentationstitel34