GNU/Linux >> Linux Esercitazione >  >> Rocky Linux

Come impostare la terminazione SSL di Varnish con il server Web Nginx su Rocky Linux 8

Il software della cache di vernice non supporta SSL/TLS per impostazione predefinita. È necessario un software aggiuntivo per abilitare il supporto SSL/TLS su Varnish.

Risoluzione SSL è un metodo per abilitare SSL/TLS su Varnish. Puoi usare Hitch, Nginx o Apache per abilitare la terminazione SSL per l'acceleratore HTTP Varnish.

Il software di terminazione SSL verrà eseguito su HTTPS porta '443 ' e gestisce tutte le richieste HTTPS dai client. Dopodiché, tutte le richieste verranno inoltrate al software della cache di vernice, quindi inoltrate al server di backend di origine.

Prerequisiti

In questo articolo imparerai come impostare la terminazione SSL di Varnish con il server web Nginx.

Prima di iniziare, assicurati di disporre dei seguenti requisiti:

  • Un server Linux con Varnish installato.
  • Privilegi di root
  • Un nome di dominio

Per questo esempio, stiamo usando il server Rocky Linux con sopra installato Varnish. E useremo il nome di dominio 'example.io '.

Ora iniziamo.

Installazione del server Web Nginx

Se stai usando Nginx come backend di Varnish, salta questo primo passaggio.

In questo primo passaggio, installerai Nginx sul sistema Linux.

1. Per la distribuzione basata su Debian/Ubuntu, eseguire il comando apt di seguito per installare il server web Nginx.

sudo apt install nginx -y

2. Per il sistema operativo CentOS/RockyLinux/AlmaLinux, eseguire il comando DNF riportato di seguito per installare il server Web Nginx.

sudo dnf install nginx -y

3. Al termine dell'installazione di Nginx, avviare e abilitare il server Web Nginx utilizzando il comando seguente.

sudo systemctl enable --now nginx

Se hai un errore, lascialo. Nel passaggio successivo configurerai Nginx.

Genera SSL con Certbot

In questo passaggio, installerai lo strumento cerbot e genererai certificati SSL da Letsencrypt per il dominio 'example.io '.

1. Innanzitutto, aggiungi le porte HTTP e HTTPS al firewall di sistema.

Per i sistemi Debian/Ubuntu, esegui il comando ufw di seguito per aprire le porte HTTP e HTTPS.

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

Per i sistemi CentOS/RockyLinux/AlmaLinux, eseguire il comando firewall-cmd riportato di seguito.

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

2. Quindi, installa lo strumento certbot utilizzando il comando seguente.

Installa lo strumento certbot su sistemi Debian/Ubuntu usando il comando apt di seguito.

sudo apt install certbot -y

Installa lo strumento certbot sui sistemi CentOS/RockyLinux/AlmaLinux utilizzando il comando DNF di seguito.

sudo dnf install certbot -y

3. Prima di generare SSL Letsencrypt, interrompere il servizio Varnish in esecuzione sulla porta HTTP predefinita.

sudo systemctl stop varnish
sudo systemctl stop nginx

4. Ora esegui il comando certbot di seguito per generare SSL Letsencrypt. E assicurati di cambiare il nome di dominio e l'indirizzo email.

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

Al termine del processo di certbot, il tuo certificato sarà disponibile nella directory '/etc/letsencrypt/live/DOMAIN.COM/ '.

Il certificato 'fullchain.pem ' è la tua chiave pubblica SSL e 'privkey.pem ' è la tua chiave privata SSL.

Imposta porta Nginx predefinita

Salta questo passaggio se stai utilizzando il server web Nginx come backend per il tuo acceleratore HTTP Varnish.

Se stai utilizzando un altro server Web di back-end, devi configurare la porta predefinita per Nginx.

1. Modifica la configurazione predefinita di nginx utilizzando nano editor.

sudo nano /etc/nginx/nginx.conf

Sul 'server { ... } predefinito ', cambia l'opzione 'ascolta ' alla porta '8081 ' come di seguito.

....

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

        ...trim...
    }

....

Salva la configurazione ed esci.

2. Ora riavvia il servizio Nginx per applicare una nuova configurazione.

sudo systemctl restart nginx

Il servizio Nginx predefinito è ora in esecuzione sulla porta '8081 '.

Imposta la terminazione SSL con il server Web Nginx

Per configurare la terminazione SSL con Nginx, devi creare una nuova configurazione di blocchi host/server virtuale che verrà eseguita sulla porta HTTPS '443'.

Questo host virtuale gestisce tutte le richieste HTTPS dai client e inoltra tutte le richieste all'acceleratore HTTP Varnish.

1. Crea una nuova configurazione del blocco del server Nginx utilizzando il comando seguente.

Se stai usando il sistema basato su Debian/Ubuntu, crea una nuova configurazione '/etc/nginx/sites-available/example.io '.

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

Per il sistema CentOS/RockyLinux/AlmaLinux, crea una nuova configurazione '/etc/nginx/conf.d/example.conf' .

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

Copia e incolla la seguente configurazione. E assicurati di cambiare il nome di dominio e il percorso dei certificati 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;
        }

  }

Salva la configurazione ed esci.

2. Successivamente, per il sistema Debian/Ubuntu, attiva la configurazione del blocco del server utilizzando il comando seguente.

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

3. Ora esegui il comando seguente per verificare la configurazione di Nginx, quindi riavvia il servizio Nginx per applicare la nuova configurazione.

sudo nginx -t
sudo systemctl restart nginx

4. Ora verifica il servizio Nginx e HTTPS porta '443 ' usando il seguente comando.

Verifica lo stato del servizio Nginx utilizzando il comando systemctl di seguito.

sudo systemctl status nginx

Assicurati che il servizio Nginx sia attivo e in esecuzione.

Verifica la porta HTTPS '443 ' sul tuo sistema usando ss comando qui sotto.

ss -antpl | grep 443

Assicurati che la porta HTTPS '443 ' sullo stato 'ASCOLTA '.

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))

Ora hai completato la configurazione di base della terminazione SSL con il server web Nginx.

HTTP automatico a HTTPS con vernice

In questo passaggio, configurerai Varnish per reindirizzare automaticamente il protocollo da HTTP a HTTPS. Questo può essere ottenuto creando una nuova regola Varnish nella configurazione 'default.vcl' .

1. Modificare la configurazione della vernice '/etc/varnish/default.vcl' usando l'editor nano.

nano /etc/varnish/default.vcl

Copia e incolla la seguente configurazione all'interno dell'opzione 'sub vcl_recv { ... } '. E assicurati di cambiare il nome di dominio con il tuo dominio.

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...
{

Quindi, aggiungi la seguente configurazione in fondo alla riga. Questo determinerà il metodo di reindirizzamento a HTTP '301'.

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

Salva la configurazione della vernice ed esci.

2. Quindi, riavvia il servizio Varnish per applicare una nuova configurazione utilizzando il comando seguente.

sudo systemctl restart varnish

E hai completato il reindirizzamento HTTP e HTTPS automatico utilizzando la regola Varnish.

Verifica la terminazione SSL di Varnish

Per testare la terminazione SSL di Varnish, puoi utilizzare il browser Web o il comando curl.

1. Apri il tuo browser web e digita il tuo nome di dominio nella barra degli indirizzi. Per questo esempio, utilizziamo il browser Web Firefox.

http://example.io

Verrai reindirizzato automaticamente al protocollo HTTPS.

Fare clic con il pulsante destro del mouse sulla pagina Web e fare clic sul menu 'Ispeziona '.

Passa alla scheda 'Rete ' e fai clic su 'Ricarica pulsante '.

Fai clic sulla richiesta dell'URL di root e vedrai un output simile come di seguito.

La richiesta a http://example.io viene automaticamente reindirizzata al protocollo HTTPS https://example.io con il codice di stato '301 '.

Il server Varnish gestisce tutte le richieste dei client.

2. Per verificare la terminazione SSL di vernice con curl, utilizzare il comando seguente.

curl -I http://example.io

Vedrai un'intestazione HTTP dettagliata come di seguito.

La richiesta viene reindirizzata al protocollo HTTPS 'https://example.io' con codice di stato HTTP '301 '. Il server di vernice gestisce tutte le richieste dei client.

Conclusione

Congratulazioni! Hai imparato la configurazione di Varnish SSL Termination con il server web Nginx.

Inoltre, hai imparato il comando di base certbot per generare Letsencrypt SSL gratuito e la regola di base della vernice per reindirizzare automaticamente da HTTP a HTTPS.


Rocky Linux
  1. Come installare Nginx Web Server su Ubuntu 18.04

  2. Come configurare NGINX ad alta disponibilità con KeepAlived in Linux

  3. Come installare Varnish 7 per Nginx su Rocky Linux 8

  4. Come installare Nginx Web Server su Linux

  5. Come installare un server FTP su Rocky Linux 8 con VSFTPD

Come installare Nginx Web Server su Alpine Linux

Come installare il server Web Lighttpd su Rocky Linux 8

Come installare il server Web OpenLiteSpeed ​​su AlmaLinux 8 / Rocky Linux 8

Come installare il server NextCloud su Rocky Linux 8

Come installare LAMP su Rocky Linux 8 Server

Come installare Nginx su Rocky Linux 9