Hosts virtuales basados en dominio
SSL
El contexto del servidor permite que varios dominios o sitios web se puedan almacenar y sirvan desde la misma máquina física o servidor privado virtual (VPS). En Nginx al igual que en Apache, se pueden declarar varios bloques de servidor (que representan hosts virtuales) dentro del contexto http para cada sitio/dominio. Nginx decide qué servidor procesa una solicitud en función del encabezado de solicitud que recibe.
Vamos a probar esta idea para lo cual utilizaremos dominios ficticios.
Dominios – directorios de los sitios web
Creamos los dominios/directorios que contendrán los sitios web, cada uno ubicado en su directorio específico:
kirby.com - /var/www/kirby.com/
punky.com - /var/www /punky.com/
A continuación, le asignamos los permisos correspondientes en el directorio de cada sitio.
Creamos una página de prueba en cada sitio
Creamos el archivo index.html en cada sitio web, con fines de prueba. Este archivo ofrecerá contenido que se mostrará en el navegador web cuando se llame al dominio en el navegador. Por ejemplo:
Puedes pegar el siguiente contenido HTML.
Copia el archivo index.html
y pega en el otro directorio, en mi caso, en /var/www/punky.com
. Haz alguna modificación en el documento HTML para probar uno y otro sitio web.
Crear bloques en el servidor Nginx
Tenemos que crear los bloques del servidor Nginx en el directorio /etc/nginx/sites-available
. Recuerda que el bloque es /etc/nginx/sites-available/default
que sirve el archivo HTML predeterminado en /var/www/html/index.nginx-debian.html
. Justamente la web que nos muestra cuando instalamos el Nginx y escribimos localhost en el navegador.
En nuestro caso, vamos a tener que crear un bloque que sirva el contenido de los sitios previamente creados. Para ello, podemos copiar y pegar el archivo por defecto /etc/nginx/sites-available/default
como:
El contenido de ambos ficheros sería:
Habilitando los bloques en ../sites-enable/
Para habilitar el bloque del servidor Nginx, éste debe ser vinculado simbólicamente al directorio /etc/nginx/sites-enabled/
. Para ello, creamos un enlace simbólico dentro de la carpeta sites-enable:
Verificamos que la configuración de nginx está correcta haciendo:
Para reiniciar el nginx podemos hacer:
Testeando
Debe obtener el contenido incluido en el archivo HTML en su bloque de servidor como se muestra.
SSL en Nginx - OPENSSL
Los certificados SSL ayudan a habilitar http seguro (HTTPS) en su sitio, que es esencial para establecer una conexión confiable/segura entre los usuarios finales y su servidor al cifrar la información que se transmite hacia o desde el sitio web.
Vamos a ver cómo crear e instalar un certificado autofirmado
y generar una solicitud de firma de certificado (CSR) para adquirir un certificado SSL de una autoridad de certificación (CA), y poder utilizarlo con Nginx.
Los certificados auto firmados se pueden crear de forma gratuita y prácticamente están listos para realizar pruebas y para servicios internos de redes LAN. Cuando se trata de servidores públicos, se recomienda utilizar un certificado emitido por una CA (Let's Encrypt) para mantener su autenticidad.
Para crear un certificado auto firmado, lo primero que debemos hacer es crear un directorio que nos permita almacenarlos.
Posteriormente, generamos el certificado autofirmado y la clave usando la herramienta de línea de comando openssl.
Donde:
req -X509: muestra que estamos creando un certificado x509.
nodes (NO DES): significa "no cifrar la clave".
days 365: especifica la cantidad de días durante los que será válido el certificado.
newkey rsa: 2048: especifica que la clave generada mediante el algoritmo RSA debe ser de 2048 bits.
keyout /etc/nginx/ssl-certs/kirby.com.key: especifica la ruta completa de la clave RSA.
out /etc/nginx/ssl-certs/kirby.com.crt: especifica la ruta completa del certificado.
Directivas en el archivo de configuración de kirby.com
Dentro del archivo de configuración: /etc/nginx/sites-available/kirby.com.conf
agregaremos las siguientes directivas:
Las directivas ssl_protocols
y ssl_ciphers
se pueden usar para limitar las conexiones para incluir solo las versiones seguras y cifrados de SSL/TLS.
De forma predeterminada, Nginx usa ssl_protocols
TLSv1 TLSv1.1 TLSv1.2 y ssl_ciphers
HIGH:!aNULL:!MD5, por lo que generalmente no es necesario configurarlos explícitamente.
Para probar que funciona correctamente el certificado creado con openssl, basta ir al navegador y llamar a nuestros sitios web: https://www.kirby.com
y https://www.punky.com.
Como se muestra en las imágenes a continuación.
To be continued ...
LINKS
Last updated
Was this helpful?