Varnish est un serveur proxy axé sur la mise en cache HTTP. Il est conçu comme un accélérateur HTTP et peut agir comme un proxy inverse pour votre serveur Web (Apache ou Nginx). Le vernis a été utilisé pour des sites Web très médiatisés et à fort trafic, notamment Wikipedia, The Guardian et The New York Times.
Dans ce didacticiel, nous allons vous montrer comment installer et configurer l'accélérateur HTTP Varnish en tant que proxy inverse pour le serveur Web Apache. Le vrai serveur Web Apache fonctionnera sous un port HTTP non standard (fonctionnant sur le port 8080). Et Varnish fonctionnera en tant que proxy inverse sur le port HTTP 80. Pour ce guide, nous utiliserons le serveur Ubuntu 16.04.
Ce que nous allons faire
- Installer le serveur Web Apache
- Modifier le port par défaut d'Apache
- Installer le vernis
- Configurer le vernis
- Tester la configuration
Prérequis
- Ubuntu 16.04
- Privilèges root
Étape 1 - Installer le serveur Web Apache
Pour commencer, installez le serveur Web Apache. Par défaut, il est disponible dans le référentiel Ubuntu.
Mettez à jour le référentiel Ubuntu, puis installez Apache à l'aide de la commande apt.
sudo apt update
sudo apt install -y apache2
Une fois l'installation terminée, démarrez le service Apache et activez-le pour qu'il s'exécute automatiquement au démarrage du système à l'aide des commandes systemctl suivantes.
systemctl start apache2
systemctl enable apache2
Le serveur Web Apache a été installé.
Ensuite, afin de permettre à tout le monde d'accéder au serveur Web, nous devons autoriser HTTP et HTTPS sur notre règle de pare-feu. Par défaut, Ubuntu est livré avec un package de pare-feu nommé UFW.
Ouvrez de nouveaux ports SSH, HTTP et HTTPS à l'aide des commandes ufw suivantes.
ufw allow ssh
ufw allow http
ufw allow https
Démarrez maintenant le service de pare-feu et activez-le pour qu'il se lance automatiquement au démarrage du système.
ufw enable
Tapez 'y' et appuyez sur Entrée pour confirmer.
De nouveaux ports pour http, https et ssh ont été ouverts et sont accessibles depuis l'extérieur du réseau.
Si vous souhaitez tester le serveur Web Apache, vous pouvez utiliser la commande netstat et vous assurer qu'apache s'exécute sous le port 80.
netstat -plntu
Ou vous pouvez utiliser la commande curl suivante.
curl -I hakase-labs.co
Vous devriez obtenir le résultat comme indiqué ci-dessous.
Étape 2 - Modifier le port par défaut d'Apache
Dans ce didacticiel, nous utiliserons Apache comme serveur principal et il ne fonctionnera pas sous le port http standard 80. Le serveur Web Apache fonctionnera sur le port 8080 en tant que serveur principal et le port http standard 80 sera utilisé par ' Vernis'.
Pour changer le port apache par défaut, nous devons modifier la configuration apache 'ports.conf' et toute la configuration de l'hôte virtuel sous le répertoire 'sites-available'.
Allez dans le répertoire de configuration d'Apache.
cd /etc/apache2
Remplacez le port '80' par '8080' dans la configuration Apache 'ports.conf' et tous les fichiers de l'hôte virtuel sous le répertoire 'sites-available'. Nous pouvons le faire en exécutant les commandes sed suivantes.
sed -i -e 's/80/8080/g' ports.conf
sed -i -e 's/80/8080/g' sites-available/*
Ensuite, testez la configuration d'Apache et assurez-vous qu'il n'y a pas d'erreur, puis redémarrez le service Apache.
apachectl configtest
systemctl restart apache2
Maintenant, Apache s'exécute sous le port http '8080', vérifiez-le à l'aide de la commande netstat comme indiqué ci-dessous.
netstat -plntu
Assurez-vous d'avoir le résultat ci-dessous.
Ainsi, vous pouvez voir que le serveur Web Apache s'exécute sur le port '8080'.
Étape 3 - Installer l'accélérateur HTTP Varnish
Dans cette étape, nous allons installer Varnish à partir du référentiel Ubuntu. Et pour ce guide, nous utiliserons le vernis 4.
Installez le vernis à l'aide de la commande apt suivante.
sudo apt install -y varnish
Une fois l'installation terminée, démarrez Varnish et activez-le pour qu'il se lance automatiquement au démarrage du système.
systemctl start varnish
systemctl enable varnish
Varnish a été installé sur le système Ubuntu 16.04.
Par défaut, il s'exécute sous les ports '6081' pour l'adresse publique et '6082' pour l'adresse localhost. Vérifiez-le en utilisant la commande netstat ci-dessous.
netstat -plntu
Et vous obtiendrez le port de vernis par défaut.
Étape 4 - Configurer Varnish en tant que proxy inverse pour Apache
Dans cette étape, nous allons configurer le vernis sur le devant du serveur Web Apache. Varnish fonctionnera sous le port http 80, et chaque demande des clients sera traitée par celui-ci, avant d'être envoyée au serveur Web Apache fonctionnant sur le port 8080.
- Configuration du back-end
Allez dans le répertoire de configuration 'varnish' et sauvegardez le fichier par défaut 'default.vcl'.
cd /etc/varnish/
cp default.vcl default.vcl.aseli
Modifiez la configuration de vernis 'default.vcl' à l'aide de l'éditeur vim.
vim default.vcl
Définissez la configuration 'backend' à la ligne 16. Le backend de notre configuration est Apache, et il s'exécute sur le port 8080. Ainsi, la configuration de vernis pour notre configuration apache devrait être la suivante :
backend default {
.host = "127.0.0.1";
.port = "8080";
}
Enregistrez et quittez.
- Exécuter du vernis sur le port 80
Ensuite, nous devons changer les ports de vernis par défaut. Les ports par défaut pour le vernis sont '6081' et '6082', et nous devons changer le port en port http 80 (uniquement pour l'adresse publique).
Modifiez la configuration des paramètres de vernis dans le répertoire '/etc/default'.
cd /etc/default/
vim varnish
Modifiez la ligne 'DAEMON_OPTS', changez le port par défaut '6081' pour l'adresse publique avec le port http standard '80' comme indiqué ci-dessous.
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Enregistrez et quittez.
Ensuite, nous devons éditer le fichier de service de vernis 'varnish.service'. Accédez au répertoire '/lib/systemd/system' et modifiez le fichier de service à l'aide de vim.
cd /lib/systemd/system/
vim varnish.service
Sur la ligne 'ExecStart', modifiez la commande de démarrage du vernis comme ci-dessous.
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Enregistrez et quittez.
Rechargez la configuration du service systemd, puis redémarrez le vernis.
systemctl daemon-reload
systemctl restart varnish
Vérifiez maintenant le vernis et assurez-vous qu'il s'exécute sur le port http 80.
netstat -plntu
Ainsi, Varnish s'exécute désormais sous le port http 80 en tant qu'interface pour le serveur Web Apache, qui se trouve sur le port 8080.
Étape 5 - Tester
Testez avec la commande curl.
curl -I hakase-labs.co
Assurez-vous d'obtenir l'en-tête http comme indiqué ci-dessous.
En vérifiant à partir du navigateur Web, l'URL de mon serveur de test est : http://hakase-labs.co/. Choisissez l'URL de votre serveur ici.
Et nous obtenons toujours le contenu d'Apache.
Vérifiez le journal de vernis à l'aide de la commande 'varnishncsa'.
varnishncsa
Et nous obtenons le journal uniquement à partir du journal d'accès Apache.
L'installation et la configuration de Varnish pour le serveur Web Apache sont terminées.
Référence
- Cache de vernis
- Apache HTTPD