La per­for­mance est un des critères les plus im­por­tants pour un site Web et re­pré­sente un gage de qualité important. Les longs temps de char­ge­ment im­pa­tien­tent les visiteurs et ils auront tendance à quitter le site avant d’attendre la fin du char­ge­ment et que le site ait pu les con­vaincre par la qualité du contenu. Le Page Speed compte désormais pour Google parmi les com­po­sants né­ces­saires pour une ex­pé­rience uti­li­sa­teur moderne depuis 2010 et c’est devenu un véritable critère de ré­fé­ren­ce­ment. C’est pourquoi les ad­mi­nis­tra­teurs de sites Web devraient veiller à ce que la rapidité de leur site soit sa­tis­fai­sante pour optimiser leurs projets. Vous avez entre autres la pos­si­bi­lité de com­pres­ser les images du site, de réduire la densité des données du code ou encore d’optimiser le nombre de requêtes. Une autre approche consiste à utiliser un proxy inverse pour décharger le serveur. Ces com­po­sants logiciels servent d’interface entre le na­vi­ga­teur et le serveur Web car ils traitent les requêtes du na­vi­ga­teur et délivrent les contenus statiques mis en mémoire tampon sans contacter le serveur Web. Cette méthode est par­ti­cu­liè­re­ment efficace, notamment lorsque le serveur a recours à un affichage dynamique sys­té­ma­tique sans pour autant changer au­to­ma­ti­que­ment. Une des solutions les plus po­pu­laires consiste à utiliser le programme Squid pour réaliser un tel cache proxy.

Squid, c’est quoi ?

Squid est un logiciel de serveur proxy qui a été mis sur le marché en 1998 par Duane Wessels en tant qu’al­ter­na­tive au « Harvest object cache ». Une version com­mer­ciale est apparue en parallèle, nommée NetCache. Son dé­ve­lop­pe­ment a par ailleurs été arrêté depuis. Squid est distribué sous la licence GNU (General Public License) et est com­pa­tible entre autres avec les pro­to­coles HTTP, HTTP/2, HTTPS et FTP. Les serveurs proxy Squid sont com­pa­tibles avec la majorité des systèmes d’ex­ploi­ta­tion et dif­fé­rentes versions de Linux, Mac OS X ou Windows. Les commandes s’ef­fec­tuent de manière classique via une interface graphique comme GAdmin SQUID ou encore SquidMan.

Des milliers d’ad­mi­nis­tra­teurs de sites Web utilisent les pos­si­bi­li­tés offertes par le cache du proxy open source. Wikipedia a par exemple eu recours aux proxys Squid pendant plusieurs années pour délivrer le contenu, tout en dé­char­geant la base de données et le serveur Web. De plus, il est possible avec Squid et à l’aide d’HTTPS de prendre en charger des con­nexions sé­cu­ri­sées en SSL. De plus, divers four­nis­seurs Web utilisent mon­dia­le­ment Squid en tant que proxy trans­pa­rent pour assurer l’op­ti­mi­sa­tion de l’accès internet. Évi­dem­ment, il est toujours possible d’utiliser les logiciels en open source pour un seul Client et ainsi cacher son adresse IP, tout en s’assurant d’une sécurité com­plé­men­taire pour le filtrage de paquets de données du pare-feu. De manière al­ter­na­tive, Squid peut filtrer ces paquets de données in­dé­pen­dam­ment avec l’extension Squid­Guard.

Pourquoi utiliser Squid en tant que serveur proxy

Squid est un produit en open source, depuis sa toute première version. Aucun frais de licence n’est donc engendré et le texte source est dis­po­nible librement. Il n’est donc pas possible de té­lé­char­ger le logiciel gra­tui­te­ment, mais il est possible de l’adapter à vos besoins. Cela ne sera néanmoins né­ces­saire que dans une minorité de cas : l’ex­pé­rience des dé­ve­lop­peurs du projet Squid s’étend sur plus d’une dizaine d’années. Ils dé­ve­lop­pent le programme proxy à titre gracieux et sur la base du vo­lon­ta­riat. Squid est un logiciel qui comporte de multiples facettes et optimise la vitesse d’un site. Des listes de contrôle d’accès (Access Control Lists) per­met­tent également de l’utiliser pour un usage privé. D’un côté, l’accès à des contenus en par­ti­cu­lier peut être restreint ou alors la bande passante est limitée. De l’autre côté, les fichiers log du proxy utilisé peuvent être analysés sans dif­fi­cul­tés pour contrôler le trafic des données.

Une des par­ti­cu­la­ri­tés prin­ci­pales de Squid repose sur sa grande flexi­bi­lité, ce qui est un avantage important pour les réseaux les plus grands et les plus complexes. Ainsi, il est par exemple possible de créer un grou­pe­ment du cache te du proxy, en ayant recours à plusieurs proxys et de répartir les requêtes. Ce grou­pe­ment de com­po­sants décharge les com­po­sants uniques et permet d’éviter les pannes.

Tout comme dans un Content Delivery Network, plusieurs reverse proxy peuvent se trouver à dif­fé­rents endroits.

Comment fonc­tionne le processus de cache du logiciel proxy

Les dif­fé­rentes fonctions de sécurité et de contrôle qu’il est possible de réaliser dé­montrent à quel point ce logiciel en open source comporte de multiples facettes. Squid convainc avant tout par sa fonction prin­ci­pale en tant que serveur proxy pour la mise en mémoire tampon. Pour s’assurer de sa dis­po­ni­bi­lité et son actualité, Squid calcule ré­gu­liè­re­ment votre statut et deux résultats sont alors possibles : l’objet en question est soit à jour (fresh) ou doit être mis à jour (stale). Pour que l’in­té­gra­lité des données n’ait pas à être contrôlée, un al­go­rithme calcule pour chaque objet à quelle fréquence une vé­ri­fi­ca­tion sera né­ces­saire.  

Pour cela, dif­fé­rents facteurs sont pris en compte :

LM last modified ; Header-In­for­ma­tion, qui dévoile la date de la dernière mo­di­fi­ca­tion
EX expire; Header-In­for­ma­tion, qui indique la date d’ex­pi­ra­tion de l’objet en question
NOW La date actuelle
OBJ_Date Date d’en­re­gis­tre­ment du cache Squid et date de la dernière mo­di­fi­ca­tion
MIN Durée de con­ser­va­tion de la mémoire tampon
MAX longévité maximale dans la mémoire tampon
PERCENT Facteur de durée de vie
Obj_Age Décrit la durée depuis laquelle un objet est dans le cache (NOW - OBJ_Date)
LM_Age Âge de l’objet au moment de la mise en mémoire tampon (OBJ_Date - LM)
LM_FACTOR Facteur de l’âge (Obj_Age / LM_Age)

Jusqu’à un instant dénommé X, un objet reste dans le cache. La formule en question pour le calcul est la suivante:

X = OBJ_Date + (LM_Age * PERCENT)

Le serveur proxy de Squid contrôle le statut d’un objet plus fré­quem­ment si l’objet est ré­gu­liè­re­ment modifié. Le moment du contrôle le plus tôt est dénommé MIN, c’est-à-dire la longévité minimale dans la mémoire tampon. Lorsque la longévité maximale dans la mémoire tampon MAX est atteinte, Squid doit contacter le serveur Web. Pour cela, le serveur proxy envoie une requête GET avec If-Modified-Since, y compris avec le ren­seig­ne­ment OBJ_DATE. Le serveur Web vérifie le statut de l’objet et envoie soit :

  • Le code de statut 304 (not modified), lorsque l’objet n’est pas modifié,
  • Le code de statut 200 (OK) tout comme le nouvel objet modifié.

Ainsi, les données sont vé­hi­cu­lées lorsqu’une mo­di­fi­ca­tion aura été effectuée.

Quelles prérequis logiciels sont né­ces­saires avec Squid ?

Si vous désirez utiliser un proxy inverse de Squid pour votre serveur Web, vous devriez tout d’abord vous assurer que vous disposez des com­po­sants matériels né­ces­saires. Un tel proxy n’est pas forcément exigeant envers les capacités du pro­ces­seur, mais envers le disque dur et la mémoire vive. Ces deux com­po­sants sont ac­ces­sibles, c’est pourquoi leur ac­qui­si­tion est plus une question de justesse du calcul que de prix. Calculez votre besoin en fonction de votre projet Web et prenez en compte la crois­sance po­ten­tielle de votre site. En achetant vos com­po­sants in­for­ma­tiques, misez sur des com­po­sants modernes comme les disques durs SSD, qui se dé­mar­quent par la rapidité et une ex­cel­lente op­ti­mi­sa­tion de votre site Web.

Installer Squid : comment ça fonc­tionne ?

En règle générale, deux pos­si­bi­li­tés s’offrent à vous pour installer le logiciel Squid sur votre système. La première variante requiert d’avoir Squid sous forme de gestion des paquets dans la dis­tri­bu­tion  utilisée. Si tel est le cas, l’ins­tal­la­tion du programme proxy est possible via la barre de commandes. Avec Ubuntu, la commande sera la suivante :

sudo apt-get update
sudo apt-get install squid

La deuxième méthode consiste à té­lé­char­ger le fichier de con­fi­gu­ra­tion. Cela permet de les dézipper et de les compiler de manière classique (par exemple dans la Version 3.5.20) :

tar xzf squid-3.5.20.tar.gz
cd squid-3.5.20
./configure
make

Avec la commande:

make install

Qui permet de débuter l’ins­tal­la­tion. Depuis la Version 3.5, il existe pour les systèmes Windows (64-Bit) un fichier de con­fi­gu­ra­tion MSI, que vous pouvez lancer avec un simple double clic après le té­lé­char­ge­ment. À chaque version stable qui aura été lancée, une version Beta et une version dé­ve­lop­pe­ment sera dis­po­nible et celles-ci com­pren­dront de nouvelles fonc­tion­na­li­tés. Les deux versions servent en première ligne à tester ces fonctions, c’est pourquoi il est pré­fé­rable de les utiliser lorsque l’on maitrise déjà le fonc­tion­ne­ment de Squid.

Con­fi­gu­rer votre serveur proxy Squid pour un site Web plus rapide

Il est possible de définir de quelle manière votre proxy Squid va agir dans le fichier de con­fi­gu­ra­tion squid.conf. En règle générale, ce fichier se trouve sous /etc oder /usr/local/squid/etc/, c’est-à-dire dans le dossier qui aura été défini au cours de l’ins­tal­la­tion. Il existe déjà divers réglages pré­dé­fi­nis qui sont iden­ti­fiables dans les lignes de com­men­taires et com­men­cent par (#). Dans les extraits suivants, un résumé des dif­fé­rentes options qui s’offrent à vous pour installer Squid est exposé.

Les dif­fé­rentes options réseaux : # NETWORK OPTIONS

Dans cet espace, les ports et les adresses IP peuvent être con­fi­gu­rés pour l’ad­mi­nis­tra­tion du serveur. Les commandes suivantes sont utiles pour le cache du proxy :

http_port

Syntaxe : http port [nom d'hôte ou adresse IP:] numéro de port

Des­crip­tion : dé­fi­ni­tion du port sur Squid sur les­quelles se basent les requêtes HTTP du client. De manière standard, c’est le port 3128 qui est désigné. Si ni le nom d'hôte ni l’adresse IP est affiché, ces réglages sont valables pour les adresses IP reliées. La saisie de plusieurs ports est possible.

Exemple : http_port 192.168.0.1:3128

https_port

Syntaxe : https_port [Adresse IP:]numéro de port cert=parcours vers le cer­ti­fi­cat SSL [key=Pfad zum privaten SSL-Schlüssel] [options]

Des­crip­tion : la saisie du port  HTTPS est requise pour que le proxy Squid puisse accepter les con­nexions SSL et TLS. La saisie du cer­ti­fi­cat (en format PEM) est obli­ga­toire. Si vous ne saisissez pas de clé SSL privée, Squid part au­to­ma­ti­que­ment du principe que le fichier de données PEM contient déjà une clé privée. Avec le paramètre options, il est possible d’étendre les fonc­tion­na­li­tés des documents OpenSSL.

icp_port

Syntax : icp_port numéro de port

Des­crip­tion : c’est ici que vous saisissez le port sue lequel les requêtes Squid ICP (Internet Cache Protocol) sont prises en compte et que les paquets de données UDP sont ré­cep­tion­nés. La saisie n’est né­ces­saire que si vous utilisez plusieurs proxys qui doivent com­mu­ni­quer entre eux. Le port standard est 3130, pour dé­sac­ti­ver la fonction il suffit de saisir le paramètre 0.

Exemple : icp_port 3130

Options de mise en cache : # OPTIONS WHICH AFFECT THE CACHE SIZE

Dans les options de mise en cache, vous dé­ter­mi­nez entre autres combien de mémoire vive votre proxy Squid utilisera pour la mise en cache. Vous pouvez également définir la taille maximale et minimale des objets et les options générales de mise en cache.

cache_mem

Syntax : cache_mem mémoire vive en MB

Des­crip­tion : avec cache_mem, il est possible de définir la taille de la mémoire centrale pour les objets en transit (in transit objects), ceux qui sont souvent utilisés  (hot objects) ainsi que les objets en cache (negative cached objects). Comme ces données comptent jusqu’à 4KB, la valeur indiquée ici aussi doit com­prendre une valeur multiple de 4KB. Ne confondez pas cette option avec la mémoire requise absolue de Squid, qui n’est pas régulée de cette manière.

Exemple : cache_mem 256 MB

maximum_object_size

Syntaxe : maximum_object_size taille de l’objet en KB/MB

Des­crip­tion : cette commande informe Squid sur la taille maximale de l’objet mis en mémoire tampon. La taille minimale peut être définie avec minimum_object_size.

Exemple : maximum_object_size 4 MB

In­di­ca­tion du cache et su ré­per­toire fichier Log : # LOGFILE PATHNAMES AND CACHE DI­REC­TO­RIES

En plus des in­di­ca­tions sur les ports et la procédure de mise en mémoire cache du na­vi­ga­teur, le proxy serveur Squid requiert des in­for­ma­tions sur les contenus et les fichiers Log de la mémoire tampon.

cache_dir

Syntaxe : cache_dir type de dossier, chemin du ré­per­toire, espace de stockage, nombre de ré­per­toires

Des­crip­tion : avec cache_dir, il est possible de définir la capacité de stockage maximale en mégabytes et la quantité de ré­per­toires et sous-ré­per­toires. Le type de ré­per­toire installé de manière standard est nommé ufs. Gé­né­ra­le­ment, cette option doit être activée.

Exemple : cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

cache_log

Syntaxe : cache_log chemin des données

Des­crip­tion : détermine l’endroit où le fichier Log sera sau­ve­gardé.

Exemple : cache_log /usr/local/squid/var/logs/cache.log

Options d’accès : # ACCESS CONTROLS

Pour finir, vous aurez besoin du port et des listes d’accès définies et utilisées par Squid. Deux pa­ra­mètres sont dé­ter­mi­nants : acl Syntaxe : acl Lis­ten­name Listentyp Argument Des­crip­tion : cela permet de créer une liste d’accès détaillée pour toutes les con­nexions HTTP, ICP et TCP. Pour un aperçu exact des types et des options, il est re­com­mandé de regarder en ligne dans le manuel en ligne Squid. Exemple : acl all src 0.0.0.0 http_access Syntaxe: http_acess allow|deny [!]Lis­ten­name Des­crip­tion : autorise (allow) ou interdit (deny) l’accès au port http en fonction de la liste d’accès. Les points d’ex­cla­ma­tion per­met­tent l’ajout des con­nexions qui n’ap­par­tien­nent pas à la liste en question.  Exemple : htttp_access deny !SSL_ports

Aller au menu principal