Cómo instalar Nginx en Fedora 32

En esta entrada explicaremos cómo instalar Nginx en Fedora 32 paso a paso, un servidor web cada día más usado en Internet, de modo que puedas mostrar sitios web de desde tu servidor o VPS Fedora.

Antes de instalar Nginx en Fedora 32

Si tienes intención de seguir los pasos de esta guía de instalación de Nginx en Fedora 32, basta con cumplir estos mínimos requerimientos:

  • Un sistema Fedora 32 actualizado.
  • Acceso a línea de comandos con un usuario con privilegios de sudo, o con root.
  • Conexión a Internet.

Cómo instalar Nginx en Fedora 32

Puesto que vamos a instalar Nginx en Fedora 32 desde los repositorios de la distribución, es importante realizar una actualización de las listas de paquetes disponibles:

~$ sudo yum update

El paquete que necesitamos en nginx, que instalaremos con yum:

~$ sudo yum install -y nginx

Finalizada la descarga e instalación de Nginx, se crea un nuevo servicio en Fedora 32, el servicio nginx.service o nginx si prefieres el nombre corto, pero este servicio no queda en ejecución ni habilitado, por lo que debemos hacer manualmente estas tareas.

Para arrancar por primera vez Nginx en Fedora 32, usaremos la opción start del comando systemctl:

~$ sudo systemctl start nginx

Y para que Nginx inicie automáticamente en cada arranque de Fedora 32, habilitamos el servicio con la opción enable:

~$ sudo systemctl enable nginx

Podemos comprobar el estado de servicio en cualquier ocasión con el comando systemctl status nginx:

como instalar nginx en fedora 32

Versión de Nginx instalada en Fedora 32

Si necesitas saber qué versión de Nginx usas en Fedora 32 puedes saberlo lanzando el comando nginx -v:

~$ nginx -v
nginx version: nginx/1.18.0

Configurar el firewall de Fedora 32 para Nginx

En el caso de tener activado el firewall de Fedora 32, que es la opción por defecto, si queremos permitir acceso desde red a Nginx tendremos que añadir excepciones.

Para el servicio HTTP, que utiliza en puerto TCP 80:

~$ sudo firewall-cmd --permanent --add-service=http

Y para el servicio cifrado HTTPS, que trabaja con el puerto TCP 443:

~$ sudo firewall-cmd --permanent --add-service=https

Estos ajustes no entrarán en servicio hasta que se recargue la configuración del firewall:

~$ sudo firewall-cmd --reload

Acceder a Nginx en Fedora 32

Para acceder a Nginx en Fedora 32 desde un navegador y obtener la página web del sitio por defecto utilizaremos como URL la dirección IP, dominio, nombre DNS del servidor Fedora 32 si accdemos desde red, o http://127.0.0.1 ó http://localhost si accedemos localmente.

instalar Nginx en Fedora 32

Cómo configurar Nginx en Fedora 32

Para configurar Nginx en Fedora 32 trabajaremos sobre sus archivos de configuración, que se encuentran organizados bajo la ruta /etc/nginx/, siendo el archivo principal nginx.conf, que además incluye otros archivos de forma explícita o especificando subdirectorios desde los que se cargarán los archivos presentes.

Vamos a crear un subdirectorio específico para guardar las configuraciones de servidores virtuales:

~$ sudo mkdir /etc/nginx/sites.d

Para que Nginx tenga en cuenta los archivos presentes en el nuevo subdirectorio, editaremos el archivo principal, nginx.conf:

~$ sudo nano /etc/nginx/nginx.conf

Al final del archivo, justo antes de la llave de cierre, añadimos la siguiente directiva include:

...
        include /etc/nginx/sites.d/*.conf;
}

Para aplicar estos ajustes recargamos la configuración del servicio Nginx:

~$ sudo systemctl reload nginx

Veremos más detalles de configuración de Nginx en Fedora 32 en los siguientes casos prácticos.

Cómo configurar servidores virtuales de Nginx en Fedora 32

Antes de configurar nuevos servidores virtuales de Nginx hay que saber que el sitio web por defecto que acabamos de probar es también un servidor virtual, configurado en un bloque server dentro del archivo de configuración principal nginx.conf.

Limpiando un poco el contenido de este archivo, la configuración del servidor virtual por defecto sería esta:

...
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
...

El contenido de este bloque server es bastante intuitivo, pero podemos resumir brevemente los principales puntos:

  • Las directivas listen indican en qué puerto se escuchan las peticiones, que para el acceso HTTP es el 80, siendo una directiva para el protocolo IPv4 y otro para el IPv6.
  • server_name indica a qué dominios atiende este servidor virtual, pero al tratarse del servidor por defecto atenderá cualquier petición que no pueda ser procesada por otro servidor virtual.
  • root indica la ruta de la carpeta de documentos del sitio web.
  • include se ocupa de cargar otros archivos de configuración, en este caso los procedentes del subdirectorio default.d/, siempre que tengan la extensión *.conf.
  • error_page permite configurar una página web personalizada.
  • location es un bloque que permite añadir configuraciones aplicables sólo a la ruta indicada.

Sabiendo cómo funcionan los servidores virtuales vamos a crear alguno más.

Dominios

Para poder configurar distintos servidores virtuales sobre Nginx es preciso disponer de distintos dominios apuntando al mismo servidor Fedora 32. En el caso de un servidor o VPS en Internet, deberemos registrar y configurar estos dominios a través de servicios profesionales como Namecheap, el servicio que usamos en comoinstalar.me.

Search and buy domains from Namecheap. Lowest prices!

En el caso de redes locales, los dominios deberían estar configurados en los correspondientes servidores DNS.

Como ejemplo, en este artículo crearemos un nuevo servidor virtual para el dominio fedora32mania.lan, debidamente configurado, de modo que al acceder al servidor Fedora 32 con el dominio principal o este dominio adicional obtendremos el sitio web por defecto:

como instalar y configurar nginx en fedora 32

Configuración

Antes de crear la configuración de nuevos servidores virtuales conviene preparar la carpeta que alojará los archivos del sitio web, y un buen sitio podría ser, al igual que el servidor por defecto, bajo la ruta /usr/share/nginx/:

~$ sudo mkdir /usr/share/nginx/fedora32mania.lan

Crearemos el contenido mínimo, un archivo index.html, para probar el servidor virtual:

~$ sudo nano /usr/share/nginx/fedora32mania.lan/index.html

Cualquier mensaje identificativo servirá:

<h1>Bienvenidos a fedora32mania.lan</h1>
<small>Servido por Nginx</small>

Guardamos los cambios y cerramos el archivo.

La configuración de los nuevos servidores virtuales de Nginx podría hacerse añadiendo sucesivos bloques server en el archivo principal nginx.conf, pero en lugar de ello los crearemos como archivos independientes dentro del subdirectorio sites.d/ que preparamos en un paso anterior:

~$ sudo nano /etc/nginx/sites.d/fedora32mania.lan.conf

Para el servidor virtual encargado del dominio fedora32mania.lan podríamos crear esta configuración:

server {
        listen 80;
        listen [::]:80;

        server_name fedora32mania.lan;
        root /usr/share/nginx/fedora32mania.lan;
}

Cualquier ajuste que no se especifique en este bloque server se tomará de la configuración por defecto.

Guardados los cambios, recargamos la configuración de Nginx para aplicarlos:

~$ sudo systemctl reload nginx

Podemos probar de nuevo el acceso a los distintos dominios:

instalar y configurar nginx en fedora 32

Ahora el dominio fedora32mania.lan es gestionado por su propio servidor virtual, mientras que cualquier otro dominio que apunte al servidor Fedora 32 será atendido por el servidor por defecto.

Configuración SSL para Nginx en Fedora 32

Si queremos ofrecer contenido web mediante conexiones seguras, será preciso configurar el acceso SSL para Nginx en Fedora 32, mediante el protocolo seguro HTTPS y los correspondientes certificados.

En el caso de un servidor o VPS Fedora destinado a ofrecer el servicio en Internet es importante trabajar con certificados firmados por autoridades certificadoras, como los que ofrecen servicios profesionales como Namecheap.

SSL Certificate for just $8.88 with Namecheap

Para servidores en pruebas o redes locales pueden bastarte certificados autofirmados generados en el mismo servidor Fedora 32.

En el caso del servidor por defecto, la configuración SSL se haya también en el archivo nginx.conf, dentro de un bloque server desactivado:

...
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }
...

Activando la configuración mínima podría quedar algo así:

...
    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  _;
        root         /usr/share/nginx/html;
        ssl_certificate "/etc/pki/tls/certs/fedora32.local.lan.crt";
        ssl_certificate_key "/etc/pki/tls/private/fedora32.local.lan.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;
#        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
...

La diferencias con el bloque server que gestiona el servidor por defecto para HTTP son:

  • Las directivas listen indican el puerto estándar para conexiones cifradas HTTPS, el 443, y se activa el cifrado añadiendo el parámetro ssl.
  • Las directivas ssl_certificate y ssl_certificate_key indican las rutas a la clave privada con que se cifra la conexión y al certificado público, respectivamente. Hemos cambiado en el bloque de configuración anterior estas rutas porque indican ubicaciones y archivos que no existen.
  • El resto de directivas SSL ajustan ciertos valores del sistema de cifrado.

Podemos modificar las rutas de las directivas ssl_certificate y ssl_certificate_key para que apunten a la ubicación de nuestros certificados o, si no disponemos de certificados firmados podemos crear certificados autofirmados:

~$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -out /etc/pki/tls/certs/fedora32.local.lan.crt -keyout /etc/pki/tls/private/fedora32.local.lan.key

Se nos solicitará información adicional para incorporarla al certificado público, siendo el valor más importante el de «Common Name«, que debería ser el dominio al que asociamos los certificados y el servidor virtual:

...
Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:fedora32.local.lan
Email Address []:
...

En cualquier caso, con los certificados (firmados o autofirmados) instalados y la configuración actualizada, será necesario recargar la configuración del servicio Nginx.

Accederemos de nuevo al sitio web, pero usando https:// en lugar de http:// al comienzo de la URL:

configurar nginx en fedora 32

En el caso de haber usado certificados autofirmados el navegador no podrá comprobar la autenticidad de los mismos, por lo que mostrará un aviso. Normalmente el navegador permitirá de algún modo confirmar que entendemos la situación y queremos continuar con el acceso.

configurar ssl para nginx en fedora 32

Accederemos a la versión cifrada del sitio web, aunque si se están usando certificados autofirmados el navegador seguirá indicándolo de alguna forma.

Para activar el cifrado SSL en un servidor virtual adicional el proceso será aún más sencillo, ya que sólo habrá que añadir algunas directivas extra a la configuración actual, incluso dentro del mismo bloque server. En el caso del ejemplo que hemos realizado en este tutorial, la configuración podría quedar así:

server {
        listen 80;
        listen [::]:80;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        ssl_certificate /etc/pki/tls/certs/fedora32mania.lan.crt;
        ssl_certificate_key /etc/pki/tls/private/fedora32mania.lan.key;

        server_name fedora32mania.lan;
        root /usr/share/nginx/fedora32mania.lan;
}

Con la configuración de Nginx actualizada, y con la salvedad del uso de certificados autofirmados, podemos visitar las versiones cifradas de todos los servidores virtuales de Nginx de nuestra máquina Fedora 32:

configuracion ssl para nginx en fedora 32

Conclusión

Ahora que sabes cómo instalar y configurar Nginx en Fedora 32 ya puedes ofrecer contenido web para distintos dominios y con conexiones seguras desde tu servidor o VPS Fedora 32.

Si tienes alguna pregunta o duda, propuesta de mejora del artículo, crees que necesita actualización o quieres notificar un posible error, deja un comentario y le echo un vistazo lo antes posible.

¡Apoya comoinstalar.me!

¿Ya estás listo para poner en línea tu sitio web gracias a esta guía de instalación y configuración de Nginx en Fedora 32? Si es así y te apetece agradecérnoslo, puedes ayudar al mantenimiento de este sitio y a la creación de más artículos sobre Fedora 32 y Nginx de varias formas…

Invitándome a un café:

 

O dejando una propina en PayPal:

¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies