En este artículo veremos cómo instalar el servidor web Nginx en Rocky Linux 8 paso a paso, de tal forma que podrás servir contenido web desde tu servidor o VPS Rocky Linux usando una de las alternativas más populares en este momento.
Contenido
Antes de instalar Nginx en Rocky Linux 8
Si quieres seguir los pasos de esta guía de instalación del servicio web Nginx en Rocky Linux 8 sólo debes cumplir estos mínimos requisitos:
- Una máquina Rocky Linux 8 actualizada.
- Acceso a línea de comandos con un usuario con permisos de sudo.
- Conexión a Internet.
Como seguramente ya cumples estos requerimientos, es el momento de regular la altura correcta de tu mesa y abrir una terminal de consola.
Cómo instalar Nginx en Rocky Linux 8
Vamos a instalar Nginx en Rocky Linux 8 usando los repositorios de la distribución, por lo que empezaremos actualizando su información:
~$ sudo yum update
El paquete que necesitamos no es otro que nginx, que instalamos con yum:
~$ sudo yum install -y nginx
Finalizada la descarga de Nginx y sus dependencias se crea un nuevo servicio en Rocky Linux 8, el servicio nginx o nginx.service. Este servicio no queda en ejecución ni habilitado para su inicio automático, así que tendremos que hacer esto de forma manual.
Iniciamos Nginx por primera vez en Rocky Linux 8 con el comando systemctl:
~$ sudo systemctl start nginx
Si queremos que Nginx inicie automáticamente en cada arranque de Rocky Linux 8, habilitaremos el servicio:
~$ sudo systemctl enable nginx
Podremos comprobar en cualquier momento el estado del servicio con el siguiente comando:
~$ systemctl status nginx
Versión instalada
Si necesitas saber qué versión exacta del servidor web está corriendo, puedes usar el comando nginx:
~$ nginx -v nginx version: nginx/1.14.1
Configuración del firewall
Si quieres acceder al servicio Nginx de una máquina Rocky Linux 8 en red, será necesario añadir las reglas necesarias a la configuración del firewall.
Para acceder a la versión HTTP estándar:
~$ sudo firewall-cmd --permanent --add-port=80/tcp
Y para acceder a la versión segura HTTPS:
~$ sudo firewall-cmd --permanent --add-port=443/tcp
Aplicamos estas reglas recargando la configuración del firewall:
~$ sudo firewall-cmd --reload
Acceder al servicio web
Vamos a acceder al sitio web por defecto de Nginx en Rocky Linux 8 indicando la dirección del servidor (IP, nombre DNS, dominio, localhost para conexiones locales, etc.).
Por ejemplo, la máquina Rocky Linux 8 que hemos empleado para elaborar este tutorial es accesible en el subdominio rocky8.local.lan, así que usaremos http://rocky8.local.lan como URL.
Inicialmente sólo está disponible el protocolo estándar HTTP, será necesario realizar algunos ajustes de configuración para activar el protocolo seguro HTTPS.
Cómo configurar Nginx en Rocky Linux 8
Para configurar Nginx en Rocky Linux 8 trabajaremos sobre sus archivos de configuración, ubicados en la ruta /etc/nginx/, siendo nginx.conf el archivo principal y desde el que se enlaza el resto.
Cuando hayamos terminado de hacer cambios podemos comprobar que la configuración es correcta con el comando nginx:
~$ sudo nginx -t
Si todo es correcto y no hay nada que corregir, podemos recargar la configuración del servicio para aplicar los cambios:
~$ sudo systemctl reload nginx
Seguridad SSL para Nginx sobre Rocky Linux 8
Si quieres ofrecer conexiones seguras HTTPS con seguridad SSL a tus visitantes es necesario utilizar archivos de clave de cifrado y certificados que podremos generar desde la misma máquina Rocky Linux 8.
Servidores en Internet
En caso de tratarse de una máquina Rocky Linux 8 que ofrece el servicio Nginx desde Internet es muy importante que el certificado utilizado esté firmado por autoridades certificadoras como Namecheap.
Usaremos el comando openssl para generar la clave de cifrado y el archivo de solicitud de firma de certificado (o archivo CSR):
~$ sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/rocky8.local.lan.key -out rocky8.local.lan.csr
En el comando anterior indicamos la ruta donde guardar el archivo de clave y el directorio actual para guardar el archivo CSR.
Este comando es interactivo y solicita información pública para ser incorporada al certificado. De entre toda esta información el campo más importante es «Common Name«, donde indicaremos el dominio asociado al certificado (es decir, el dominio con el que sea accederá al sitio web protegido mediante conexión segura).
... Common Name (eg, your name or your server's hostname) []:rocky8.local.lan ...
La contraseña pedida en el último paso no será necesaria.
El archivo CSR generado contiene información que puede examinarse con el comando cat:
~$ cat rocky8.local.lan.csr -----BEGIN CERTIFICATE REQUEST----- MIICojCCAYoCAQAwXTELMAkGA1UEBhMCRVMxFTATBgNVBAcMDERlZmF1bHQgQ2l0 ... d1jt1+d9 -----END CERTIFICATE REQUEST-----
Es este contenido (incluyendo la línea de inicio y de fin) el que se envía al servicio de certificados para que genere el certificado firmado correspondiente.
Servidores locales o en pruebas
Si estamos configurando un servidor Nginx en una máquina Rocky Linux 8 local o en fase de pruebas, podemos crear un certificado autofirmado.
Usaremos igualmente openssl, pero indicando que también deseamos crear el certificado y su ruta de instalación:
~$ sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/rocky8.local.lan.key -x509 -days 3650 -out /etc/pki/tls/certs/rocky8.local.lan.crt
Configurar las conexiones SSL
Para configurar la conexión SSL del sitio web por defecto editaremos nginx.conf:
~$ sudo nano /etc/nginx/nginx.conf
Dentro del bloque server principal, por ejemplo justo antes de la llave de cierre de dicho bloque, añadimos las siguientes directivas:
... server { ... listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate "/etc/pki/tls/certs/rocky8.local.lan.crt"; ssl_certificate_key "/etc/pki/tls/private/rocky8.local.lan.key"; } ...
Guardamos los cambios, cerramos el archivo y comprobamos la configuración:
~$ sudo nginx -t
Y si todo está correcto, recargamos la configuración del servicio:
~$ sudo systemctl reload nginx
Ya podemos conectar a la versión segura del sitio web, sustituyendo el protocolo HTTP por HTTPS.
Por ejemplo, para la máquina Rocky Linux 8 de este tutorial usamos ahora https://rocky8.local.lan como URL.
Si usamos certificados autofirmados el navegador mostrará un aviso referente a la imposibilidad de comprobar la autenticidad del certificado:
El navegador ofrecerá alguna forma de continuar con la conexión, recordando la excepción, y mostrará el sitio web:
En el caso de usar certificados firmados la conexión se realiza directamente, sin ningún tipo de avisos.
Servidores virtuales sobre Rocky Linux 8
Podemos alojar varios sitios web distintos en nuestro servidor Rocky Linux 8 referenciados por distintos dominios gracias a la posibilidad de configurar servidores virtuales de Nginx.
Para ello necesitamos que los dominios que vayamos a usar estén registrados y configurados apuntando al servidor Rocky Linux 8.
En el caso de un servidor en Internet tendremos que registrar y configurar los dominios a través de algún servicio profesional como Namecheap (el sitio donde hemos registrado nuestro dominio).
Si se trata de un servicio local tendrán que estar configurados en el servidor DNS local (o en el archivo hosts de los clientes).
Para este tutorial tendremos el dominio rockyweb.com configurado para apuntar al servidor Rocky Linux 8 que hemos montado.
Empezaremos creando un directorio para las configuraciones de cada servidor virtual:
~$ sudo mkdir /etc/nginx/sites.d
Editamos nginx.conf:
~$ sudo nano /etc/nginx/nginx.conf
Antes del inicio del bloque server principal insertaremos una directiva include que cargue los archivos de configuración ubicados en el directorio que acabamos de crear:
... include /etc/nginx/sites.d/*.conf; server { ...
Guardamos el archivo y creamos la configuración del nuevo servidor virtual:
~$ sudo nano /etc/nginx/sites.d/rockyweb.com.conf
El contenido será similar al siguiente:
server { listen 80; listen [::]:80; server_name rockyweb.com; root /usr/share/nginx/rockyweb.com; location / { } }
Las directivas más importantes del bloque server son:
- listen, que indica el puerto de conexión estándar (el 80 TCP) y los protocolos IP (IPv4 e IPv6, por eso hay dos directivas).
- server_name, la más importante porque es la que determina a qué dominio responderá este servidor virtual.
- root, la ubicación de los archivos del sitio web (ruta que crearemos después).
- location, bloque o bloques que configuran el comportamiento de ciertas rutas (relativas a la especificada en root) del sitio web.
Guardamos y cerramos el archivo, comprobamos la configuración y recargamos el servicio:
~$ sudo systemctl reload nginx
Por último, vamos a crear algo de contenido para el nuevo sitio web, empezando por el directorio de archivos web que hemos especificado en la configuración:
~$ sudo mkdir /usr/share/nginx/rockyweb.com
Y como contenido web creamos el archivo index.html:
~$ sudo nano /usr/share/nginx/rockyweb.com/index.html
Este archivo mostrará un simple mensaje identificativo:
<h1>Bienvenidos a rockyweb.com</h1> <small>Powered by Nginx</small>
Guardamos y cerramos este archivo.
Ya podemos acceder al dominio del sitio web por defecto y al dominio del servidor virtual adicional:
Ahora cada dominio muestra un sitio web distinto.
Si quieres usar conexiones seguras en el nuevo servidor virtual, crea e instala su propia clave de cifrado y certificado, edita el archivo de configuración del servidor virtual y añade las directivas SSL necesarias:
server { listen 80; listen [::]:80; listen 443 http2 ssl; listen [::]:443 http2 ssl; ssl_certificate "/etc/pki/tls/certs/rockyweb.com.crt"; ssl_certificate_key "/etc/pki/tls/private/rockyweb.com.key"; server_name rockyweb.com; root /usr/share/nginx/rockyweb.com; location / { } }
Guardamos, verificamos y recargamos la configuración.
Ya podemos acceder a las versiones seguras del sitio por defecto y el servidor virtual:
Puedes repetir este proceso para añadir todos los servidores virtuales de Nginx que necesites o que permitan los recursos de tu máquina Rocky Linux 8.
Conclusión
Ahora que sabes cómo instalar y configurar el servidor Nginx en Rocky Linux 8 ya puedes ofrecer sitios web desde tu servidor o VPS Rocky, con la potencia de los servidores virtuales y la seguridad que proporcionan las conexiones SSL.
¡Apoya comoinstalar.me!
¿Ya puedes servir contenido web gracias a nuestra pequeña guía? Si es así y quieres agradecérnoslo, cualquier pequeña contribución aporta mucho al mantenimiento de este sitio y la creación de nuevos tutoriales y guías.
Puedes ayudarnos dejando tan sólo 1 $ de propina desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
¿Dudas, preguntas, sugerencias?
Si tienes alguna duda, pregunta o sugerencia, quieres notificar alguna correción, etc. puedes dejar un comentario. Los comentarios están moderados, para intentar evitar el SPAM, pero se revisan prácticamente a diario.