Squid: Beschleunigen Sie Ihre Website mit einem plattformübergreifenden Proxy-Cache
Die Leistung ist eine der wichtigsten Eigenschaften einer guten Website, da Benutzer eine Seite häufig mit übermäßigen Ladezeiten verlassen, bevor sie überhaupt die Qualität der von ihr gehosteten Inhalte beurteilen konnten. Seit 2010 gehört die Seitengeschwindigkeit oder Seitengeschwindigkeit als Bestandteil der Nutzererfahrung ( User Experience, UX) zu den Ranking-Faktoren von Google . Dies macht es erforderlich, der Optimierung der Ladegeschwindigkeit einer Webseite besondere Aufmerksamkeit zu widmen, insbesondere wenn Sie Administrator sind. Dies wird unter anderem durch Komprimieren der Bilder, Komprimieren oder Optimieren von Codedateien oder Reduzieren der Anzahl von Anforderungen erreicht.
Eine andere Möglichkeit, die Leistung einer Website zu verbessern und die Serverlast zu verringern, besteht darin, einen Reverse-Proxy-Server zu installieren, der als Vermittler zwischen dem Browser und dem Webserver fungiert , Browseranforderungen in seinem Namen verarbeitet und statische Inhalte bereitstellt wurde autonom gespeichert, ohne dass es vom Hauptserver angefordert werden muss. Dies ist besonders effektiv, wenn der Server dieselbe Seite immer wieder dynamisch generieren muss, auch wenn sie unverändert bleibt. Zu den beliebtesten Lösungen für die Implementierung eines Proxy-Cache-Servers dieses Typs gehört das kostenlose Squid-Programm.
- Was ist Tintenfisch?
- Warum sollten Sie einen Squid-Proxyserver implementieren?
- Wie funktioniert das Zwischenspeichern eines Squid-Servers?
- Hardwareanforderungen zum Installieren eines Squid
- Tintenfisch-Installationshandbuch
- So konfigurieren Sie Squid, um eine Webseite zu beschleunigen
- Netzwerkoptionen: # NETZWERKOPTIONEN
- Caching-Optionen: # OPTIONEN, DIE DIE CACHE-GRÖSSE BEEINFLUSSEN
- Caching- und Logfile-Verzeichnisse: # LOGFILE PATHNAMES AND CACHE DIRECTORIES
- Zugriffsoptionen: # ZUGRIFFSKONTROLLEN
Was ist Tintenfisch?
Squid ist eine Proxy-Server-Software, die 1998 von Duane Wessels als letzte vorkommerzielle Version des Harvest-Objektcaches veröffentlicht wurde. Sie wird benannt, um sie vom NetCache-Hauptzweig zu unterscheiden, dessen Entwicklung nicht fortgesetzt wurde. Squid ist unter einer GNU General Public License lizenziert und unterstützt unter anderem die Protokolle HTTP, HTTP / 2, HTTPS und FTP.
Squid-Server können auf gängigen Betriebssystemen wie verschiedenen Linux- Distributionen oder Mac OS X- und Windows-Systemen ausgeführt werden , entweder mit dem eigenen Befehlstool des Geräts oder über eine grafische Oberfläche wie GAdmin-SQUID oder SquidMan.
Squid wird von Tausenden von Webadministratoren als Proxy-Cache verwendet. Wikipedia verwendete jahrelang mehrere Squid-Proxyserver, um den Inhalt bereitzustellen, mit dem Ziel, die Datenbank und den Webserver zu entlasten. Die Unterstützung des HTTPS-Protokolls macht es außerdem ideal für den Aufbau sicherer SSL-Verbindungen. In einem anderen Bereich verwenden Internetanbieter es auch als transparenten Proxy , um den Internetzugang zu optimieren. Natürlich kann es auch als Forward-Proxy für einen einzelnen Client verwendet werden, sodass die IP-Adresse selbst verborgen bleibt und somit zusätzlich zur Paketfilterung der Firewall zusätzlichen Schutz bietet . Mit der SquidGuard-Erweiterung können Sie Pakete autonom filtern.
Warum sollten Sie einen Squid-Proxyserver implementieren?
Der Quellcode von Squid ist seit seiner ersten Version kostenlos verfügbar und erfordert keine Lizenzgebühr. Dies bedeutet, dass er nicht nur kostenlos heruntergeladen, sondern auch an die jeweiligen Anforderungen angepasst werden kann. Änderungen sind jedoch aufgrund der Vielfalt und Geschwindigkeitsverbesserung, die Squid bietet, normalerweise nicht erforderlich. Dies ist ein Produkt der langjährigen Erfahrung von Entwicklern, die sich der Verwaltung und Entwicklung des Proxy-Programms widmen.
Auch im privaten Bereich werden die Vorteile der Installation eines Squid-Proxyservers anhand der definierbaren Zugriffssteuerungslisten ( Zugriffssteuerungslisten ) demonstriert , mit denen einerseits der Zugriff auf bestimmte Inhalte blockiert oder die verwendete Bandbreite begrenzt werden kann. Sie können Proxy- Protokolldateien verwenden und andererseits analysieren , um den Datenverkehr zu steuern.
Ein weiterer relevanter Aspekt von Squid ist seine große Flexibilität, von der die komplexesten Netzwerke besonders profitieren, so dass eine Kombination miteinander verbundener Squid-Proxy-Cache-Server erstellt werden kann, auf die die Anforderungen verteilt werden. Dieser Satz von Servern entlädt jede der Komponenten und erhöht die Absturzsicherheit erheblich . Wie in einem Content Delivery-Netzwerk kann sich jeder der Reverse-Proxy-Server an verschiedenen Orten befinden.
Wie funktioniert das Zwischenspeichern eines Squid-Servers?
Die oben genannten Sicherheits- und Kontrollfunktionen sind ein Beispiel für die Vielfalt der Anwendungsbereiche eines Squid-Servers. In erster Linie überzeugt jedoch seine Hauptfunktion als Proxy-Cache-Server für die temporäre Datenspeicherung . Um die Aktualität und Verfügbarkeit dieser Daten zu gewährleisten, berechnet Squid von Zeit zu Zeit ihren Status mit zwei möglichen Ergebnissen: Das untersuchte Objekt ist aktuell (frisch) oder veraltet (veraltet). Um zu vermeiden, dass immer der gesamte Datensatz überprüft werden muss, berechnet ein Algorithmus, wie oft der Status jedes Objekts überprüft werden muss. Die folgenden Informationen werden bei dieser Bewertung berücksichtigt:
LM | Zuletzt geändert; Informationen in der Kopfzeile, die das Datum der letzten Änderung anzeigen |
---|---|
EHEMALIGE | Verfallen; Informationen in der Kopfzeile mit dem Ablaufdatum eines Objekts |
JETZT | Aktuelles Datum |
OBJ_Date | Datum, an dem das Objekt in Squid oder der letzten Änderung zwischengespeichert wurde |
MINDEST | Minimales Caching |
MAX | Maximale Cache-Persistenz |
PROZENT | Dauerhaftigkeitsfaktor |
Obj_Age | Beschreibt, wie lange sich ein Objekt im Cache befindet (NOW – OBJ_Date). |
LM_Age | Alter eines Objekts zum Zeitpunkt des Cachings (OBJ_Date – LM) |
LM_FACTOR | Altersfaktor (Obj_Age / LM_Age) |
Wenn wir herausfinden möchten, bis (X) ein Objekt im Cache gültig ist, verwenden wir diese Formel:
X = OBJ_Date + (LM_Age * PERCENT)
Dieser Caching-Algorithmus erhöht die Kontrolle des Squid-Servers über den Status eines Objekts, wenn das Objekt häufige Änderungen erfährt. Der Moment, in dem die Auswertung beginnt, ist MIN, dh das Mindestdatum für den Aufenthalt im Cache. Später, wenn das maximale Aufenthaltsdatum oder MAX erreicht ist, hat Squid keine andere Wahl, als den Webserver zu kontaktieren. Zu diesem Zweck sendet die Proxy-Software eine GET-Anforderung mit der Information If Modified Since , die das Datum OBJ_DATE enthält. Der Webserver überprüft den Status des Objekts und kann zwei Antworten senden:
- Statuscode 304 (nicht geändert), wenn das Objekt nicht geändert wurde,
- Statuscode 200 (ok) sowie das neue und geänderte Objekt.
Auf diese Weise werden Daten nur übertragen, wenn sie sich tatsächlich geändert haben.
Hardwareanforderungen zum Installieren eines Squid
Wenn Sie einen Squid-Reverse-Proxy verwenden möchten, müssen Sie zunächst überprüfen, ob Sie über die erforderlichen Hardwarestrukturen verfügen. Ein Proxy-Cache hat keine besonderen Anforderungen an die Prozessorleistung , hängt jedoch von einer ausreichenden Speicherkapazität auf dem Festplattenlaufwerk und dem Speicher ab. Da es sich heute um sehr erschwingliche Komponenten handelt, ist ihre Anschaffung höher eine Frage der korrekten Berechnung als des Preises. Berechnen Sie zunächst den Speicherplatzbedarf des Projekts, lassen Sie also Raum für potenzielles Wachstum, und zweitens moderne Hardwarekomponenten wie SSD-Solid-State-Laufwerke, die durch kurze Zugriffszeiten gekennzeichnet sind , die dies garantieren die ideale Optimierung der Geschwindigkeit Ihrer Website.
Tintenfisch-Installationshandbuch
Im Allgemeinen stehen bei der Installation der Squid-Software zwei Optionen zur Auswahl. Sie können die erste auswählen, wenn Squid in der Paketverwaltung der von Ihnen verwendeten Distribution enthalten ist. Wenn dies der Fall ist, erfolgt die Installation des Proxy-Programms über Befehlszeilen nach dem bekannten Muster:
sudo apt-get update sudo apt-get install squid
Die zweite Variante beinhaltet das Herunterladen der Installationsdateien, die ebenfalls wie gewohnt extrahiert und kompiliert werden (Version 3.5.20 wurde im Beispiel befolgt):
tar xzf squid-3.5.20.tar.gz cd squid-3.5.20 ./configure make
Nach dem Herunterladen beginnt die Installation mit dem folgenden Befehl:
make install
Seit Version 3.5 gibt es ein inoffizielles MSI-Installationspaket für 64-Bit- Windows-Systeme , das durch Doppelklicken nach dem Download ausgeführt wird.
Es sollte erwähnt werden, dass es für jede veröffentlichte stabile Version eine Beta-Version und eine Entwicklungsversion mit neuen Funktionen gibt. Der Grund für diese beiden Versionen besteht jedoch genau darin, diese neuen Funktionen auszuprobieren. Sie sollten daher nur dann auf sie zurückgreifen, wenn Sie die Squid-Software sehr gut kennen.
So konfigurieren Sie Squid, um eine Webseite zu beschleunigen
Die Konfigurationsdatei .idf von squid wird verwendet, um den Proxy-Typ zu definieren, den Squid imitieren soll. Dieser wird normalerweise standardmäßig in / etc oder in / usr / local / squid / etc / (oder in dem von Ihnen angegebenen Verzeichnis) gefunden Installation). Einige Einstellungen sind bereits standardmäßig in Befehlszeilen definiert, denen das Nummernzeichen (#) vorangestellt ist. Im Folgenden finden Sie eine Zusammenfassung der Optionen, die für die Installation von Squid erforderlich sind.
Netzwerkoptionen: # NETZWERKOPTIONEN
Diese Befehle definieren die IP-Adressen und Ports, die für den Betrieb des Squid-Servers relevant sind. Die folgenden Einträge sind der Schlüssel zum Proxy-Cache:
http_port
Syntax : http_port [ Hostname oder IP – Adresse :] Portnummer
Beschreibung : Definiert den Port, an dem Squid auf HTTP-Anforderungen von Clients wartet, der standardmäßig als Port 3128 definiert ist. Wenn weder Hostname noch IP-Adresse eingegeben werden, gelten die Einstellungen für alle eingebetteten IP-Adressen. Es ist auch möglich, mehrere Ports einzugeben.
Beispiel : http_port 192.168.0.1:3128
https_port
Syntax : https_port [ Adresse IP :] Portnummer cert = Pfad zum SSL-Zertifikat [Schlüssel = Pfad zum privaten SSL-Schlüssel ] [ Optionen ]
Beschreibung : Wenn Squid eine SSL- oder TLS-Verbindung empfangen soll, ist dies erforderlich , um den HTTPS-Port sowie bereitzustellen auch der Pfad zum verwendeten Zertifikat (im PEM-Format). Wenn kein privater SSL-Schlüssel eingegeben wird, geht Squid davon aus, dass die PEM-Datei bereits den privaten Schlüssel enthält. Mit dem Parameter options können Sie zusätzliche Optionen gemäß der OpenSSL-Dokumentation eingeben.
icp_port
Syntax : icp_port Portnummer
Beschreibung : Hier geben Sie den Port ein, an dem Squid ICP-Anforderungen (Internet Cache Protocol) akzeptiert oder UDP-Pakete empfängt. Sie müssen es nur eingeben, wenn Sie mehrere Proxys verwenden, die miteinander kommunizieren müssen. Der Standardport ist 3130. Um die Funktion zu deaktivieren, geben Sie den Parameter 0 ein.
Beispiel : icp_port 3130
Caching-Optionen: # OPTIONEN, DIE DIE CACHE-GRÖSSE BEEINFLUSSEN
In den Caching-Optionen wird definiert, ob Squid Speicher für Caching-Aufgaben verwendet und wenn ja, wie viel, oder es bestimmt die minimale und maximale Größe der Objekte und das allgemeine Caching-Verhalten.
cache_mem
Syntax : cache_mem Speicherplatz in MB
Beschreibung : cache_mem definiert die Größe der Hauptfestplatte, die für Transitobjekte ( In-Transit-Objekte ), für stark angeforderte Objekte ( Hot Objects ) und für nicht zwischenspeicherbare Objekte ( Negative-Cached Objects ) reserviert ist . Da diese Objekte in Blöcken von jeweils 4 KB vorhanden sind, muss der hier eingegebene Wert ein Vielfaches von 4 KB sein. Diese Option ist nicht mit der gesamten Speicheranforderung von Squid zu verwechseln, die nicht auf diese Weise geregelt ist.
Beispiel : cache_mem 256 MB
Maximum_Object_size
Syntax : maximum_object_size Objektgröße in KB / MB
Beschreibung : Diese Zeile informiert Squid über die maximale Größe, die die Objekte im Cache speichern müssen. Die Mindestgröße wird mit Minimum_Object_size festgelegt.
Beispiel : Maximum_Object_size 4 MB
Caching- und Logfile-Verzeichnisse: # LOGFILE PATHNAMES AND CACHE DIRECTORIES
Neben den Informationen zu den Ports und dem Verhalten des Proxy-Cache muss Squid auch wissen, in welchem Verzeichnis der Inhalt und die generierten Protokolldaten vorübergehend gespeichert werden sollen.
cache_dir
Syntax : cache_dir Typ des Verzeichnisses Pfad zum Verzeichnis Speicherplatz Anzahl der Verzeichnisse
Beschreibung : Mit cache_dir definieren Sie sowohl das Verzeichnis für das Caching als auch dessen maximale Kapazität in Megabyte und die Anzahl der Verzeichnisse und Unterverzeichnisse. Der standardmäßig installierte Verzeichnistyp ist ufs. Diese Option ist im Allgemeinen deaktiviert und muss daher zuerst aktiviert werden.
Beispiel : cache_dir ufs / usr / local / squid / var / cache / squid 100 16 256
cache_log
Syntax : cache_log Dateipfad
Beschreibung : Gibt an, wo die Squid-Server-Protokolldatei gespeichert ist, in der allgemeine Informationen zum Verhalten der Software aufgezeichnet werden.
Beispiel : cache_log /usr/local/squid/var/logs/cache.log
Zugriffsoptionen: # ZUGRIFFSKONTROLLEN
Schließlich erfordern die von Squid verwendeten Ports klar definierte Zugriffslisten. In diesem Fall sind zwei Parameter besonders entscheidend:
Acl
Syntax : acl Listenname Listentyp Argument
Beschreibung : Mit diesem Parameter können Sie eine vollständige Zugriffsliste für alle HTTP-, ICP- und TCP-Verbindungen erstellen. Eine vollständige Liste der Typen und Optionen finden Sie im offiziellen Squid-Handbuch.
Beispiel : acl all src 0.0.0.0
http_access
Syntax : http_acess erlaubt | verweigern [!] Listennamen
Beschreibung : http_acess erlaubt (erlaubt) oder verweigert (verweigert) den Zugriff auf den HTTP-Port basierend auf zuvor definierten Zugriffslisten. Wenn dem Namen der Liste das Ausrufezeichen vorangestellt ist, wirkt sich die Anweisung auf alle Verbindungen aus, die nicht in der Liste enthalten sind, auf die verwiesen wird.
Beispiel : htttp_access verweigern! SSL_ports