Anzeige
Anzeige
Software & Entwicklung
Artikel merken

Stark frequentierte Websites entlasten: TYPO3 mit Proxy-Server

Das Caching von TYPO3 ist zwar sehr ausgereift, kann aber bei stark besuchten Websites an seine Grenzen stoßen. Durch den Einsatz eines Proxy-Servers können wertvolle Ressourcen des Webservers unter anderem für Lastspitzen aufgespart werden.

5 Min. Lesezeit
Anzeige
Anzeige

Ein Proxy ist ein Server, der als Bindeglied zur Kommunikation zwischen dem Nutzer mit dem Webserver eingesetzt wird. Er speichert die Webseiten für eine bestimmte Zeit zwischen und liefert sie an den Nutzer. Dient der Server ausschließlich der Speicherung von Webseiten, spricht man von einem „Acceleration Proxy Server“. Auch beim Einsatz von TYPO3 macht ein Proxy-Server unter Umständen Sinn. Zwar verfügt TYPO3 seit Version 4.0 über ein sehr gutes Caching, aber bei jeder Anfrage auf eine TYPO3-Webseite muss eine PHP-Instanz gestartet werden, die eine zusätzliche Abfrage an die Datenbank richtet. Bei stark frequentierten Webseiten wird folglich die Anzahl der gleichzeitig möglichen Zugriffe durch die begrenzte Leistung der Webserver und die maximale Anzahl gleichzeitiger Datenbankverbindungen limitiert. Ein Proxy-Server wird also benötigt, um auch in Spitzenzeiten die Anzahl der Zugriffe auf die Datenbank zu minimieren. Die bereits erzeugten Seiten werden für eine festgelegte Zeit zwischengespeichert und direkt ausliefert.

Installation und Konfiguration des Proxy-Servers

Anzeige
Anzeige

In dieser Anleitung wird ein Setup beschrieben, bei dem sich der Proxy- und der Webserver auf demselben Rechner befinden. Das Setup findet überall dort Verwendung, wo nur ein Rechner zur Verfügung steht (z. B.: Vserver oder Root-Server). Die Konfiguration kann aber mit kleinen Änderungen an größere Netzwerke angepasst werden.

In jeder aktuellen Linux-Distribution ist ein „Squid Proxy-Server“ [1] enthalten. Nach der Installation sollte die Datei „squid.conf“ im Verzeichnis „/etc/squid“ vorhanden sein. Derzeit gibt es zwei Versionen, die für den produktiven Einsatz geeignet sind: 2.5.x oder 2.6.x. Zwischen diesen beiden Versionen gibt es Unterschiede in der Konfiguration als „Acceleration Proxy Server“ – auf beide Versionen wird in diesem Howto Rücksicht genommen. Hier aber zunächst die Einstellungen, die bei beiden Versionen der Datei funktionieren und angewendet werden sollten:

Anzeige
Anzeige
CONFIG
icp_port 0
cache_mem 800 MB
cache_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid 1000 16 256
emulate_httpd_log on
redirect_rewrites_host_header on
visible_hostname    www.domain.tld
forwarded_for off

Listing 1

Mit „icp_port 0“ wird die Kommunikation mit anderen Caches im Netzwerk deaktiviert und mit „cache_replacement_policy“ vereinbart, wie der Cache wieder freigegeben werden soll. „cache_mem“ gibt die Größe des Arbeitsspeichers an, der für flüchtige Cache-Objekte genutzt werden kann. „cache_dir“ gibt den Ort, die Größe und die Struktur des Caches auf der Festplatte an. Für Version 2.5.x müssen folgende Einstellungen hinzugefügt oder angepasst werden:

Anzeige
Anzeige
CONFIG
http_port 1.2.3.4:80 # 1.2.3.4 muss an die eigene IP Angepasst werden
httpd_accel_port 80
httpd_accel_host 127.0.0.1
httpd_accel_single_host on
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Listing 2

Der „http_port“ gibt den Host und Port an, an dem der Squid „hören“ soll und „httpd_accel_port“ sowie „httpd_accel_host“ geben den Port/Host an, wo der Webserver „hört“. Bei Version 2.6.x sollte die Konfiguration wie folgt aussehen:

CONFIG
http_port 1.2.3.4:80 vhost vport=80 defaultsite=127.0.0.1
cache_peer 127.0.0.1    parent  80  0   originserver    no-query default
url_rewrite_host_header on

Listing 3

Wie in der Version 2.5.x ist der Parameter „http_port“ der Port, auf dem der Squid „hört“. Mit „vport“ wird der Port zum Webserver angegeben und „defaultsite“ die IP des Webservers. Mit „cache_peer“ wird dem Squid gesagt, wo er andere Squid-Caches findet und wie er mit ihnen umgehen soll. So lassen sich Cache-Hierarchien aufbauen (sodass zum Beispiel jeder Webserver einen eigenen kleinen Squid-Cache besitzt), die aber alle den großen firmenweiten Squid-Cache als parent haben. Auf diese Weise wird zunächst im kleinen Cache angefragt und bei einem Cache-miss der parent. In diesem Beispiel geben wir aber bei „cache_peer“ nur den Webserver an, auf dem die Inhalte zu finden sind. Seit Version 2.6 ist es möglich, ein eigenes Logformat zu definieren und die Logs mit ACL’s zum Beispiel für jede Domain aufzuteilen:

Anzeige
Anzeige
CONFIG
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh %<A %mt
acl regel_domain_tld dstdomain www.domain.tld
acl regel_domain_tld dstdom_regex (www\.)?domain2.tld
access_log /var/log/squid/access.log combined regel_domain_tld

Listing 4

Bei dieser Konfiguration werden die Logs im combined Format für die Domain www.domain.tld, domain2.tld und www.domain2.tld in der Datei „/var/log/squid/access.log“ gespeichert.

Konfiguration von Zugriffsrechten

Um eine gute Kontrolle über die Domains zu haben, sollte jede Domain einzeln freigegeben werden. Das erhöht die Sicherheit, da keine anderen Domains über den Proxy-Server angefragt werden können. Die Zugriffsrechte werden beim Squid-Server über die Konfigurationsvariable „acl“ und „http_access“ gesteuert.

CONFIG
acl okdomains dstdomain www.domain.tld domain.tld
acl devdomains dstdomain dev.domain.tld
acl internal_ips src 192.168.1.1
http_access allow internal_ips devdomains
http_access deny devdomains 
http_access deny !okdomains

Listing 5

Bei dieser Konfiguration wird der Zugriff auf www.domain.tld von außen erlaubt. Der Rechner mit der IP-Adresse 192.168.1.1 darf zusätzlich noch auf „dev.domain.tld“ zugreifen. Es gibt durchaus auch die Möglichkeit, pauschal alles zu erlauben, was jedoch nicht zu empfehlen ist. Weitere Informationen gibt es im Manual von Squid [2].

Anzeige
Anzeige

Konfiguration des Webservers

Bei beiden Squid Versionen muss der Webserver auf den Port 80 auf 127.0.0.1 „hören“.
Für Apache könnte es folgendermaßen Konfiguriert werden, wobei es wichtig ist, dass nicht die Zugriffsstatistiken vom Apache ausgewertet werden. Die Log-Datein vom Squid sind zu nutzen.

CONFIG
Listen 127.0.0.1:80
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
	ServerName www.domain.tld
	...
</VirtualHost>

Listing 6

Konfiguration von TYPO3

Damit TYPO3 die richtigen Cache-Zeiten (sog. Cache-Header) an den Proxy-Server sendet, müssen folgende Zeilen in das TypoScript-Template eingetragen werden:

CONFIG
config {
	sendCacheHeaders = 1
	cache_clearAtMidnight = true
	cache_period = 86400 
}

Listing 7

Wichtig ist, dass TYPO3 mit RealURL konfiguriert wird und funktionieren muss, da der Proxy-Server die Seiten anhand der URL cached. Bei dynamischen Seiten, die öfter pro Tag aktualisiert werden, empfiehlt sich zudem das Setzen des „Cache-expires“ Feldes bei den Seiteneinstellungen (Abb.). Selbst bei einem Webprojekt, dessen Inhalt ständig wechselt, sollte die „cache_period“ auf 60 eingestellt sein. Schon diese Minute Speicherung kann die Performance der Webseite um 40 Prozent steigern. Damit TYPO3 die Seiten auch cachen kann, muss gewährleistet werden,
dass keine Extension mit „USR_INT“ oder „COA_INT“ geladen wird.
Ebenfalls darf innerhalb des TypoScripts kein „temp.xxx“ vorhanden
sein. Die „temp.xxx“-Bereiche können in vielen Fällen durch „lib.xxx“
ersetzt werden.

Anzeige
Anzeige

Information für den Betrieb des Proxy-Servers

Manchmal ist das Löschen des gesamten Cache des Proxy-Servers nötig. Es geschieht durch die Eingabe von folgenden Befehlen:

CONFIG
/etc/init.d/squid stop
squid -z
/etc/inid.d/squid start

Listing 8

Ist eingestellt, dass ein eintägiger Cache um Mitternacht gelöscht wird, entsteht für den ersten Nutzer nach Mitternacht eine Wartezeit, weil für ihn die Seite neu generiert wird. Mit einem Aufruf der Seite mit „wget“ kann der Proxy sie rechtzeitig für den ersten Nutzer cachen:

SHELL
wget --cache=off -r http://www.domain.tld/

Listing 9

Die Zeile ruft alle Daten der Webseite einmal auf und speichert sie auf der Festplatte – dabei kann sehr viel Plattenplatz in Anspruch genommen werden (je nach Größe der Webseite). Deswegen darf nicht vergessen werden, die Daten nach der Generierung wieder zu löschen.

Anzeige
Anzeige

Ein Problem kann enstehen, wenn in der „squid.conf“ einer der Parameter „header_access“ gesetzt ist. Dann kann es vorkommen, dass man sich nicht in das TYPO3-Backend einloggen kann.

Fazit

Für kleine Webseiten mit wenig Traffic lohnt sich kein Proxy-Server. Für Seiten mit viel Traffic und vielen Nutzern kann der Einsatz eines Squid-Proxy-Servers einen erheblichen Performanceschub bringen. Auch kleinere Ausfälle des Webservers können mit dem Proxy-Server abgefangen werden.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige