GNU/Linux >> Tutoriales Linux >  >> Rocky Linux

Cómo configurar la terminación Varnish SSL con el servidor web Nginx en Rocky Linux 8

El software de caché Varnish no es compatible con SSL/TLS de forma predeterminada. Necesita software adicional para habilitar la compatibilidad con SSL/TLS en Varnish.

Rescisión de SSL es un método para habilitar SSL/TLS en Varnish. Puede usar Hitch, Nginx o Apache para habilitar la terminación SSL para el acelerador Varnish HTTP.

El software de terminación de SSL se ejecutará en HTTPS puerto '443 ' y maneja todas las solicitudes HTTPS de los clientes. Después de eso, todas las solicitudes se reenviarán al software de caché de barniz y luego se reenviarán al servidor back-end de origen.

Requisitos

En este artículo, aprenderá a configurar Varnish SSL Termination con el servidor web Nginx.

Antes de comenzar, asegúrese de cumplir con los siguientes requisitos:

  • Un servidor Linux con Varnish instalado.
  • Privilegios de raíz
  • Un nombre de dominio

Para este ejemplo, estamos usando el servidor Rocky Linux con Varnish instalado encima. Y usaremos el nombre de dominio 'example.io '.

Ahora comencemos.

Instalación del servidor web Nginx

Si está utilizando Nginx como backend de Varnish, omita este primer paso.

En este primer paso, instalará Nginx en el sistema Linux.

1. Para la distribución basada en Debian/Ubuntu, ejecute el siguiente comando apt para instalar el servidor web Nginx.

sudo apt install nginx -y

2. Para el sistema operativo CentOS/RockyLinux/AlmaLinux, ejecute el siguiente comando DNF para instalar el servidor web Nginx.

sudo dnf install nginx -y

3. Una vez completada la instalación de Nginx, inicie y habilite el servidor web de Nginx con el siguiente comando.

sudo systemctl enable --now nginx

Si tienes un error, déjalo. Estarás configurando Nginx en el siguiente paso.

Generar SSL con Certbot

En este paso, instalará la herramienta cerbot y generará certificados SSL de Letsencrypt para el dominio 'example.io '.

1. Primero, agregue los puertos HTTP y HTTPS al firewall del sistema.

Para sistemas Debian/Ubuntu, ejecute el siguiente comando ufw para abrir puertos HTTP y HTTPS.

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

Para los sistemas CentOS/RockyLinux/AlmaLinux, ejecute el siguiente comando firewall-cmd.

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

2. Luego, instale la herramienta certbot usando el siguiente comando.

Instale la herramienta certbot en los sistemas Debian/Ubuntu usando el comando apt a continuación.

sudo apt install certbot -y

Instale la herramienta certbot en los sistemas CentOS/RockyLinux/AlmaLinux usando el comando DNF a continuación.

sudo dnf install certbot -y

3. Antes de generar SSL Letsencrypt, detenga el servicio Varnish que se ejecuta en el puerto HTTP predeterminado.

sudo systemctl stop varnish
sudo systemctl stop nginx

4. Ahora ejecute el siguiente comando certbot para generar SSL Letsencrypt. Y asegúrese de cambiar el nombre de dominio y la dirección de correo electrónico.

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

Una vez que se complete el proceso de certbot, su certificado estará disponible en el directorio '/etc/letsencrypt/live/DOMAIN.COM/ '.

El certificado 'fullchain.pem ' es su clave pública SSL, y 'privkey.pem ' es su clave privada SSL.

Configurar puerto Nginx predeterminado

Omita este paso si está utilizando el servidor web Nginx como backend para su acelerador Varnish HTTP.

Si está utilizando otro servidor web back-end, debe configurar el puerto predeterminado para Nginx.

1. Edite la configuración de nginx predeterminada con el editor nano.

sudo nano /etc/nginx/nginx.conf

En el 'servidor predeterminado { ... } ', cambie la opción 'escuchar ' al puerto '8081 ' como se muestra a continuación.

....

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

        ...trim...
    }

....

Guarde la configuración y salga.

2. Ahora reinicie el servicio Nginx para aplicar una nueva configuración.

sudo systemctl restart nginx

El servicio Nginx predeterminado ahora se ejecuta en el puerto '8081 '.

Configurar la terminación SSL con el servidor web Nginx

Para configurar la terminación SSL con Nginx, debe crear una nueva configuración de bloques de host/servidor virtual que se ejecutará en el puerto HTTPS '443'.

Este host virtual maneja todas las solicitudes HTTPS de los clientes y reenvía todas las solicitudes al acelerador Varnish HTTP.

1. Cree una nueva configuración de bloque de servidor Nginx con el siguiente comando.

Si está utilizando el sistema basado en Debian/Ubuntu, cree una nueva configuración '/etc/nginx/sites-disponible/example.io '.

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

Para el sistema CentOS/RockyLinux/AlmaLinux, cree una nueva configuración '/etc/nginx/conf.d/example.conf' .

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

Copie y pegue la siguiente configuración. Y asegúrese de cambiar el nombre de dominio y la ruta de los certificados 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;
        }

  }

Guarde la configuración y salga.

2. A continuación, para el sistema Debian/Ubuntu, active la configuración del bloque del servidor con el siguiente comando.

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

3. Ahora ejecute el siguiente comando para verificar la configuración de Nginx, luego reinicie el servicio de Nginx para aplicar la nueva configuración.

sudo nginx -t
sudo systemctl restart nginx

4. Ahora verifica el servicio Nginx y HTTPS puerto '443 ' usando el siguiente comando.

Verifique el estado del servicio Nginx usando el siguiente comando systemctl.

sudo systemctl status nginx

Asegúrese de que el servicio Nginx esté activo y ejecutándose.

Verifique el puerto HTTPS '443 ' en su sistema usando el ss comando a continuación.

ss -antpl | grep 443

Asegúrese de que el puerto HTTPS '443 ' en el estado 'ESCUCHA '.

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

Ahora ha completado la configuración básica de terminación SSL con el servidor web Nginx.

HTTP automático a HTTPS con Varnish

En este paso, configurará Varnish para redirigir automáticamente HTTP al protocolo HTTPS. Esto se puede lograr creando una nueva regla Varnish en la configuración 'default.vcl' .

1. Edite la configuración de barniz '/etc/varnish/default.vcl' utilizando el editor nano.

nano /etc/varnish/default.vcl

Copie y pegue la siguiente configuración dentro de la opción 'sub vcl_recv { ... } '. Y asegúrese de cambiar el nombre de dominio con su 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...
{

A continuación, agregue la siguiente configuración al final de la línea. Esto determinará el método de redireccionamiento a HTTP '301'.

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

Guarde la configuración de barniz y salga.

2. Luego, reinicie el servicio Varnish para aplicar una nueva configuración usando el siguiente comando.

sudo systemctl restart varnish

Y ha completado la redirección automática de HTTP y HTTPS utilizando la regla Varnish.

Verificar terminación Varnish SSL

Para probar la terminación Varnish SSL, puede usar el navegador web o usar el comando curl.

1. Abra su navegador web y escriba su nombre de dominio en la barra de direcciones. Para este ejemplo, estamos usando el navegador web Firefox.

http://ejemplo.io

Será redirigido automáticamente al protocolo HTTPS.

Haga clic derecho en la página web y haga clic en el menú 'Inspeccionar '.

Vaya a la pestaña 'Red ' y haga clic en 'Recargar botón '.

Haga clic en la solicitud de URL raíz y verá un resultado similar al que se muestra a continuación.

La solicitud a http://example.io se redirige automáticamente al protocolo HTTPS https://example.io con el código de estado '301 '.

El servidor Varnish maneja todas las solicitudes de los clientes.

2. Para verificar la terminación de barniz SSL con curl, use el siguiente comando.

curl -I http://example.io

Verá un encabezado HTTP detallado como se muestra a continuación.

La solicitud se redirige al protocolo HTTPS 'https://example.io' con el código de estado HTTP '301 '. El servidor de barniz maneja todas las solicitudes de los clientes.

Conclusión

¡Felicidades! Ha aprendido la configuración de Varnish SSL Termination con el servidor web Nginx.

Además, aprendió el comando básico de certbot para generar SSL Letsencrypt gratuito y la regla de barniz básica para redirigir automáticamente de HTTP a HTTPS.


Rocky Linux
  1. Cómo instalar el servidor web Nginx en Ubuntu 18.04

  2. Cómo configurar NGINX de alta disponibilidad con KeepAlived en Linux

  3. Cómo instalar Varnish 7 para Nginx en Rocky Linux 8

  4. Cómo instalar el servidor web Nginx en Linux

  5. Cómo instalar un servidor FTP en Rocky Linux 8 con VSFTPD

Cómo instalar el servidor web Nginx en Alpine Linux

Cómo instalar el servidor web Lighttpd en Rocky Linux 8

Cómo instalar el servidor web OpenLiteSpeed ​​en AlmaLinux 8 / Rocky Linux 8

Cómo instalar el servidor NextCloud en Rocky Linux 8

Cómo instalar LAMP en el servidor Rocky Linux 8

Cómo instalar Nginx en Rocky Linux 9