GNU/Linux >> Tutoriels Linux >  >> Rocky Linux

Comment configurer la terminaison SSL de Varnish avec le serveur Web Nginx sur Rocky Linux 8

Le logiciel de cache Varnish ne prend pas en charge SSL/TLS par défaut. Vous avez besoin d'un logiciel supplémentaire pour activer la prise en charge SSL/TLS sur Varnish.

Résiliation SSL est une méthode pour activer SSL/TLS sur Varnish. Vous pouvez utiliser Hitch, Nginx ou Apache pour activer la terminaison SSL pour l'accélérateur HTTP Varnish.

Le logiciel de terminaison SSL sera exécuté sur le HTTPS port '443 ' et gère toutes les requêtes HTTPS des clients. Après cela, toutes les demandes seront transmises au logiciel de cache de vernis, puis transmises au serveur principal d'origine.

Prérequis

Dans cet article, vous apprendrez comment configurer la terminaison SSL Varnish avec le serveur Web Nginx.

Avant de commencer, assurez-vous d'avoir les exigences suivantes en place :

  • Un serveur Linux sur lequel Varnish est installé.
  • Privilèges root
  • Un nom de domaine

Pour cet exemple, nous utilisons le serveur Rocky Linux avec le Varnish installé dessus. Et nous utiliserons le nom de domaine 'example.io '.

Commençons maintenant.

Installation du serveur Web Nginx

Si vous utilisez Nginx comme backend Varnish, ignorez cette première étape.

Dans cette première étape, vous installerez Nginx sur le système Linux.

1. Pour une distribution basée sur Debian/Ubuntu, exécutez la commande apt ci-dessous pour installer le serveur Web Nginx.

sudo apt install nginx -y

2. Pour le système d'exploitation CentOS/RockyLinux/AlmaLinux, exécutez la commande DNF ci-dessous pour installer le serveur Web Nginx.

sudo dnf install nginx -y

3. Une fois l'installation de Nginx terminée, démarrez et activez le serveur Web Nginx à l'aide de la commande suivante.

sudo systemctl enable --now nginx

Si vous avez une erreur, laissez-la. Vous allez configurer Nginx à l'étape suivante.

Générer SSL avec Certbot

Dans cette étape, vous allez installer l'outil cerbot et générer des certificats SSL à partir de Letsencrypt pour le domaine 'example.io '.

1. Commencez par ajouter les ports HTTP et HTTPS au pare-feu du système.

Pour les systèmes Debian/Ubuntu, exécutez la commande ufw ci-dessous pour ouvrir les ports HTTP et HTTPS.

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

Pour les systèmes CentOS/RockyLinux/AlmaLinux, exécutez la commande firewall-cmd ci-dessous.

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

2. Ensuite, installez l'outil certbot à l'aide de la commande suivante.

Installez l'outil certbot sur les systèmes Debian/Ubuntu à l'aide de la commande apt ci-dessous.

sudo apt install certbot -y

Installez l'outil certbot sur les systèmes CentOS/RockyLinux/AlmaLinux à l'aide de la commande DNF ci-dessous.

sudo dnf install certbot -y

3. Avant de générer le SSL Letsencrypt, arrêtez le service Varnish qui s'exécute sur le port HTTP par défaut.

sudo systemctl stop varnish
sudo systemctl stop nginx

4. Exécutez maintenant la commande certbot ci-dessous pour générer SSL Letsencrypt. Et assurez-vous de changer le nom de domaine et l'adresse e-mail.

sudo certbot certonly --agree-tos --email [email protected] --standalone --preferred-challenges http -d example.io

Une fois le processus de certbot terminé, votre certificat sera disponible dans le répertoire '/etc/letsencrypt/live/DOMAIN.COM/ '.

Le certificat 'fullchain.pem ' est votre clé publique SSL, et le 'privkey.pem ' est votre clé privée SSL.

Configurer le port Nginx par défaut

Ignorez cette étape si vous utilisez le serveur Web Nginx comme backend pour votre accélérateur HTTP Varnish.

Si vous utilisez un autre serveur Web principal, vous devez configurer le port par défaut pour Nginx.

1. Modifiez la configuration nginx par défaut à l'aide de l'éditeur nano.

sudo nano /etc/nginx/nginx.conf

Sur le 'serveur { ... } par défaut ', changez l'option 'écouter ' vers le port '8081 ' comme ci-dessous.

....

    server {
        listen       8081 default_server;
        listen       [::]:8081 default_server;

        ...trim...
    }

....

Enregistrez la configuration et quittez.

2. Redémarrez maintenant le service Nginx pour appliquer une nouvelle configuration.

sudo systemctl restart nginx

Le service Nginx par défaut s'exécute maintenant sur le port '8081 '.

Configurer la terminaison SSL avec le serveur Web Nginx

Pour configurer la terminaison SSL avec Nginx, vous devez créer une nouvelle configuration de blocs hôte/serveur virtuel qui s'exécutera sur le port HTTPS '443'.

Cet hôte virtuel gère toutes les requêtes HTTPS des clients et transmet toutes les requêtes à l'accélérateur HTTP Varnish.

1. Créez une nouvelle configuration de bloc de serveur Nginx à l'aide de la commande suivante.

Si vous utilisez le système basé sur Debian/Ubuntu, créez une nouvelle configuration '/etc/nginx/sites-available/example.io '.

sudo nano /etc/nginx/sites-available/example.io

Pour le système CentOS/RockyLinux/AlmaLinux, créez une nouvelle configuration '/etc/nginx/conf.d/example.conf' .

sudo nano /etc/nginx/conf.d/example.conf

Copiez et collez la configuration suivante. Et assurez-vous de changer le nom de domaine et le chemin des certificats SSL.

server {

    listen 443 ssl http2;
    server_name example.io;
    ssl_certificate           /etc/letsencrypt/live/exmaple.io/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/example.io/privkey.pem;

    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/example.io_access.log;
    error_log             /var/log/nginx/example.io_error.log;

        location / {
            proxy_pass http://127.0.0.1:80;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Port 443;
            proxy_set_header Host $host;
        }

  }

Enregistrez la configuration et quittez.

2. Ensuite, pour le système Debian/Ubuntu, activez la configuration du bloc serveur à l'aide de la commande suivante.

sudo ln -s /etc/nginx/sites-available/example.io /etc/nginx/sites-enabled/

3. Exécutez maintenant la commande suivante pour vérifier la configuration Nginx, puis redémarrez le service Nginx pour appliquer la nouvelle configuration.

sudo nginx -t
sudo systemctl restart nginx

4. Vérifiez maintenant le service Nginx et HTTPS port '443 ' à l'aide de la commande suivante.

Vérifiez l'état du service Nginx à l'aide de la commande systemctl ci-dessous.

sudo systemctl status nginx

Assurez-vous que le service Nginx est actif et en cours d'exécution.

Vérifiez le port HTTPS '443 ' sur votre système en utilisant le ss commande ci-dessous.

ss -antpl | grep 443

Assurez-vous que le port HTTPS '443 ' sur l'état 'ECOUTE '.

LISTEN 0      128          0.0.0.0:443        0.0.0.0:*    users:(("nginx",pid=4787,fd=8),("nginx",pid=4786,fd=8),("nginx",pid=4785,fd=8))

Vous avez maintenant terminé la configuration de base de la terminaison SSL avec le serveur Web Nginx.

HTTP automatique vers HTTPS avec Varnish

Dans cette étape, vous configurerez Varnish pour rediriger automatiquement HTTP vers le protocole HTTPS. Ceci peut être réalisé en créant une nouvelle règle Varnish sur la configuration 'default.vcl' .

1. Modifiez la configuration du vernis '/etc/varnish/default.vcl' en utilisant l'éditeur nano.

nano /etc/varnish/default.vcl

Copiez et collez la configuration suivante dans l'option 'sub vcl_recv { ... } '. Et assurez-vous de changer le nom de domaine avec votre domaine.

sub vcl_recv {

    ...trim...

    if (client.ip != "127.0.0.1" && req.http.host ~ "example.io") {
       set req.http.x-redir = "https://example.io" + req.url;
       return(synth(850, ""));
    }

    ...trim...
{

Ensuite, ajoutez la configuration suivante au bas de la ligne. Cela déterminera la méthode de redirection vers HTTP '301'.

sub vcl_synth {
    if (resp.status == 850) {
       set resp.http.Location = req.http.x-redir;
       set resp.status = 301;
       return (deliver);
    }
}

Enregistrez la configuration du vernis et quittez.

2. Ensuite, redémarrez le service Varnish pour appliquer une nouvelle configuration à l'aide de la commande suivante.

sudo systemctl restart varnish

Et vous avez terminé la redirection HTTP et HTTPS automatique à l'aide de la règle Varnish.

Vérifier la terminaison SSL de Varnish

Pour tester la terminaison SSL Varnish, vous pouvez utiliser le navigateur Web ou utiliser la commande curl.

1. Ouvrez votre navigateur Web et saisissez votre nom de domaine dans la barre d'adresse. Pour cet exemple, nous utilisons le navigateur Web Firefox.

http://example.io

Vous serez automatiquement redirigé vers le protocole HTTPS.

Faites un clic droit sur la page Web et cliquez sur le menu 'Inspecter '.

Allez dans l'onglet 'Réseau ' et cliquez sur 'Recharger ' bouton.

Cliquez sur la demande d'URL racine et vous verrez une sortie similaire à celle ci-dessous.

La requête à http://example.io est automatiquement redirigée vers le protocole HTTPS https://example.io avec le code d'état '301 '.

Le serveur Varnish gère toutes les demandes des clients.

2. Pour vérifier la terminaison SSL de vernis avec curl, utilisez la commande suivante.

curl -I http://example.io

Vous verrez un en-tête HTTP détaillé comme ci-dessous.

La requête est redirigée vers le protocole HTTPS 'https://example.io' avec le code d'état HTTP '301 '. Le serveur de vernis gère toutes les requêtes des clients.

Conclusion

Félicitations ! Vous avez appris la configuration de Varnish SSL Termination avec le serveur Web Nginx.

De plus, vous avez appris la commande de base certbot pour générer SSL Letsencrypt gratuit et la règle de vernis de base pour la redirection automatique de HTTP vers HTTPS.


Rocky Linux
  1. Comment installer le serveur Web Nginx sur Ubuntu 18.04

  2. Comment configurer NGINX hautement disponible avec KeepAlived sous Linux

  3. Comment installer Varnish 7 pour Nginx sur Rocky Linux 8

  4. Comment installer le serveur Web Nginx sur Linux

  5. Comment installer un serveur FTP sur Rocky Linux 8 avec VSFTPD

Comment installer le serveur Web Nginx sur Alpine Linux

Comment installer le serveur Web Lighttpd sur Rocky Linux 8

Comment installer OpenLiteSpeed ​​Web Server sur AlmaLinux 8 / Rocky Linux 8

Comment installer le serveur NextCloud sur Rocky Linux 8

Comment installer LAMP sur le serveur Rocky Linux 8

Comment installer Nginx sur Rocky Linux 9