GNU/Linux >> Znalost Linux >  >> Rocky Linux

Jak nastavit ukončení Varnish SSL s webovým serverem Nginx na Rocky Linux 8

Software mezipaměti laku ve výchozím nastavení nepodporuje SSL/TLS. K aktivaci podpory SSL/TLS na Varnish potřebujete další software.

Ukončení protokolu SSL je metoda pro povolení SSL/TLS na Varnish. Můžete použít Hitch, Nginx nebo Apache pro povolení ukončení SSL pro akcelerátor Varnish HTTP.

Software pro ukončení SSL bude spuštěn na HTTPS port '443 a zpracovává všechny požadavky HTTPS od klientů. Poté budou všechny požadavky předány softwaru cache pro laky a poté předány původnímu backend serveru.

Předpoklady

V tomto článku se dozvíte, jak nastavit ukončení Varnish SSL s webovým serverem Nginx.

Než začnete, ujistěte se, že máte splněny následující požadavky:

  • Server Linux s nainstalovaným Varnish.
  • Oprávnění uživatele root
  • Název domény

V tomto příkladu používáme server Rocky Linux s nainstalovaným Varnish. A budeme používat název domény 'example.io '.

Nyní začněme.

Instalace webového serveru Nginx

Pokud používáte Nginx jako backend Varnish, přeskočte tento první krok.

V tomto prvním kroku nainstalujete Nginx na systém Linux.

1. Pro distribuci založenou na Debian/Ubuntu spusťte níže uvedený příkaz apt a nainstalujte webový server Nginx.

sudo apt install nginx -y

2. Pro operační systém CentOS/RockyLinux/AlmaLinux spusťte níže uvedený příkaz DNF a nainstalujte webový server Nginx.

sudo dnf install nginx -y

3. Po dokončení instalace Nginx spusťte a povolte webový server Nginx pomocí následujícího příkazu.

sudo systemctl enable --now nginx

Pokud máte chybu, nechte ji. V dalším kroku budete konfigurovat Nginx.

Generovat SSL pomocí Certbot

V tomto kroku nainstalujete nástroj cerbot a vygenerujete certifikáty SSL z Letsencrypt pro doménu 'example.io '.

1. Nejprve přidejte porty HTTP a HTTPS do systémové brány firewall.

Na systémech Debian/Ubuntu otevřete porty HTTP a HTTPS spuštěním příkazu ufw níže.

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

Pro systémy CentOS/RockyLinux/AlmaLinux spusťte níže uvedený příkaz firewall-cmd.

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

2. Dále nainstalujte nástroj certbot pomocí následujícího příkazu.

Nainstalujte nástroj certbot na systémy Debian/Ubuntu pomocí příkazu apt níže.

sudo apt install certbot -y

Nainstalujte nástroj certbot na systémy CentOS/RockyLinux/AlmaLinux pomocí příkazu DNF níže.

sudo dnf install certbot -y

3. Než vygenerujete SSL Letsencrypt, zastavte službu Varnish, která běží na výchozím portu HTTP.

sudo systemctl stop varnish
sudo systemctl stop nginx

4. Nyní spusťte níže uvedený příkaz certbot pro vygenerování SSL Letsencrypt. A nezapomeňte změnit název domény a e-mailovou adresu.

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

Po dokončení procesu certbota bude váš certifikát dostupný v adresáři '/etc/letsencrypt/live/DOMAIN.COM/ '.

Certifikát 'fullchain.pem ' je váš veřejný klíč SSL a 'privkey.pem ' je váš soukromý klíč SSL.

Nastavit výchozí port Nginx

Tento krok přeskočte, pokud používáte webový server Nginx jako backend pro váš akcelerátor Varnish HTTP.

Pokud používáte jiný backendový webový server, musíte nakonfigurovat výchozí port pro Nginx.

1. Upravte výchozí konfiguraci nginx pomocí nano editoru.

sudo nano /etc/nginx/nginx.conf

Na výchozím 'serveru { ... } ', změňte možnost 'poslouchat ' na port '8081 ' jak je uvedeno níže.

....

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

        ...trim...
    }

....

Uložte konfiguraci a ukončete.

2. Nyní restartujte službu Nginx a použijte novou konfiguraci.

sudo systemctl restart nginx

Výchozí služba Nginx nyní běží na portu '8081 '.

Nastavení ukončení SSL s webovým serverem Nginx

Chcete-li nastavit ukončení SSL pomocí Nginx, musíte vytvořit novou konfiguraci bloků virtuálního hostitele/serveru, která bude běžet na portu HTTPS '443'.

Tento virtuální hostitel zpracovává všechny požadavky HTTPS od klientů a předává všechny požadavky akcelerátoru Varnish HTTP.

1. Vytvořte novou konfiguraci bloku serveru Nginx pomocí následujícího příkazu.

Pokud používáte systém založený na Debian/Ubuntu, vytvořte novou konfiguraci '/etc/nginx/sites-available/example.io '.

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

Pro systém CentOS/RockyLinux/AlmaLinux vytvořte novou konfiguraci '/etc/nginx/conf.d/example.conf' .

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

Zkopírujte a vložte následující konfiguraci. A nezapomeňte změnit název domény a cestu certifikátů 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;
        }

  }

Uložte konfiguraci a ukončete.

2. Dále pro systém Debian/Ubuntu aktivujte konfiguraci bloku serveru pomocí následujícího příkazu.

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

3. Nyní proveďte následující příkaz k ověření konfigurace Nginx a poté restartujte službu Nginx, aby se nová konfigurace použila.

sudo nginx -t
sudo systemctl restart nginx

4. Nyní ověřte službu Nginx a HTTPS port '443 ' pomocí následujícího příkazu.

Ověřte stav služby Nginx pomocí příkazu systemctl níže.

sudo systemctl status nginx

Ujistěte se, že je služba Nginx aktivní a běží.

Ověřte port HTTPS '443 ' ve vašem systému pomocí ss příkaz níže.

ss -antpl | grep 443

Zkontrolujte, zda je port HTTPS '443 ' ve stavu 'POSLECHNOUT '.

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

Nyní jste dokončili základní konfiguraci ukončení SSL s webovým serverem Nginx.

Automatický HTTP na HTTPS s lakováním

V tomto kroku nastavíte Varnish tak, aby automaticky přesměroval HTTP na protokol HTTPS. Toho lze dosáhnout vytvořením nového pravidla pro lak v konfiguraci 'default.vcl' .

1. Upravte konfiguraci laku '/etc/varnish/default.vcl' pomocí nano editoru.

nano /etc/varnish/default.vcl

Zkopírujte a vložte následující konfiguraci do možnosti 'sub vcl_recv { ... } '. A nezapomeňte změnit název domény se svou doménou.

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

Dále přidejte následující konfiguraci na konec řádku. Tím určíte metodu přesměrování na HTTP '301'.

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

Uložte konfiguraci laku a ukončete.

2. Dále restartujte službu Varnish a použijte novou konfiguraci pomocí následujícího příkazu.

sudo systemctl restart varnish

A dokončili jste automatické přesměrování HTTP a HTTPS pomocí pravidla Varnish.

Ověřte ukončení Varnish SSL

Chcete-li otestovat ukončení Varnish SSL, můžete použít webový prohlížeč nebo příkaz curl.

1. Otevřete webový prohlížeč a do adresního řádku zadejte název své domény. V tomto příkladu používáme webový prohlížeč Firefox.

http://example.io

Budete automaticky přesměrováni na protokol HTTPS.

Klikněte pravým tlačítkem na webovou stránku a klikněte na nabídku 'Prozkoumat '.

Přejděte na kartu Síť “ a klikněte na tlačítko „Znovu načíst '.

Klikněte na požadavek kořenové adresy URL a uvidíte podobný výstup jako níže.

Požadavek na http://example.io je automaticky přesměrován na protokol HTTPS https://example.io se stavovým kódem '301 '.

Server Varnish zpracovává všechny požadavky klientů.

2. Chcete-li ověřit ukončení SSL laku pomocí curl, použijte následující příkaz.

curl -I http://example.io

Uvidíte podrobnou hlavičku HTTP, jak je uvedeno níže.

Požadavek je přesměrován na protokol HTTPS „https://example.io“ se stavovým kódem HTTP „301 '. Lak server zpracovává všechny požadavky od klientů.

Závěr

gratuluji! Naučili jste se konfiguraci Varnish SSL Termination s webovým serverem Nginx.

Také jste se naučili základní příkaz certbot pro generování bezplatného SSL Letsencrypt a základní pravidlo laku pro automatické přesměrování z HTTP na HTTPS.


Rocky Linux
  1. Jak nainstalovat Varnish 7 pro Nginx na Rocky Linux 8

  2. Jak nainstalovat webový server Nginx na Linux

  3. Jak nainstalovat FTP server na Rocky Linux 8 s VSFTPD

  1. Jak nainstalovat webový server Nginx na Ubuntu 18.04

  2. Jak nastavit vysoce dostupný NGINX s KeepAlived v Linuxu

  3. Jak nainstalovat Let’s Encrypt SSL pro NGINX na Rocky Linux 8

  1. Jak nainstalovat NEOS CMS s Nginx a nechat šifrovat SSL na Rocky Linux 8

  2. Jak nainstalovat Apache Tomcat 10 s Nginx na Rocky Linux 8

  3. Jak nainstalovat Joomla s Nginx na Rocky Linux