Cómo instalar Nginx en Debian 8 Jessie

En esta ocasión veremos cómo instalar Nginx en Debian 8 Jessie paso a paso, de modo que puedas trabajar con un servidor web ampliamente usado en Internet en tu viejo servidor o VPS Debian.

Antes de instalar Nginx en Debian 8 Jessie

Para poder completar los pasos de esta guía de instalación de Nginx en Debian 8 Jessie, sólo necesitarás cumplir estos requerimientos:

  • Una máquina Debian 8 Jessie actualizada.
  • Un usuario con permisos de sudo o el mismo root.
  • Conexión a Internet.

Cómo instalar Nginx en Debian 8 Jessie

Vamos a instalar Nginx en Debian 8 Jessie desde los repositorios de la distribución, por lo que el primer paso es actualizar las listas de paquetes:

~$ sudo apt update

El paquete que instalaremos es nginx:

~$ sudo apt install -y nginx

Tras la descarga e instalación de Nginx y sus dependencias se crea un nuevo servicio en Debian 8, el servicio nginx.service o nginx, que queda en ejecución y habilitado para su inicio automático junto al sistema.

Puedes comprobar en cualquier momento el estado de Nginx en Debian 8 mediante el comando systemctl status nginx:

como instalar nginx en debian 8 jessie

Cómo saber la versión de Nginx instalada en Debian 8

Si necesitas saber qué versión de Nginx corre en Debian 8 puedes comprobarlo fácilmente desde consola:

~$ /usr/sbin/nginx -v
nginx version: nginx/1.6.2

Cómo configurar el firewall UFW para Nginx en Debian 8

Si tienes instalado el firewall UFW en Debian 8 Jessie y quieres acceder a Nginx desde la red, será necesario añadir nuevas reglas.

Para el acceso al servicio HTTP convencional:

~$ sudo ufw allow http

Y si vas a servir contenido seguro mediante cifrado SSL y conexiones HTTPS:

~$ sudo ufw allow https

Cómo acceder a Nginx en Debian 8

Para acceder a Nginx en Debian 8 desde un navegador bastará con usar la dirección IP, dominio o nombre DNS del servidor Debian 8, o con http://localhost o http://127.0.0.1 si accedemos localmente.

En este ejemplo, el dominio o nombre DNS del servidor Debian 8 que hemos usado para realizar el artículo es debian8.local.lan, por lo que podemos accecer con http://debian8.local.lan como URL:

instalar nginx en debian 8 jessie

Obtendremos la página del sitio web por defecto de Nginx.

Configurar Nginx en Debian 8 Jessie

Para configurar Nginx en Debian 8 hay que tener en cuenta que sus archivos de configuración se encuentran organizados en la ruta /etc/nginx/, siendo el archivo principal nginx.conf.

Servidores virtuales de Nginx en Debian 8 Jessie

La configuración de servidores virtuales se organiza en los subdirectorios sites-available/ y sites-enabled/, de modo que los archivos de configuración se guardan en sites-available/, pero para que sean incluidos en la configuración de Nginx deben existir enlaces simbólicos a los mismos en sites-enabled/. Es decir, un archivo de configuración en sites-available/ que no esté enlazado simbólicamente desde sites-enabled/ no será tenido en cuenta.

Antes de configurar nuevos servidores virtuales de Nginx en Debian 8 debemos saber que, de hecho, el servidor por defecto está configurado como un servidor virtual, cuyo archivo de configuración es /etc/nginx/sites-available/default.

Dominios

Para configurar nuevos servidores virtuales necesitaremos dominios adicionales apuntando al servidor Debian 8 Jessie. En el caso de estar trabajando sobre un servidor o VPS Debian para servir páginas en Internet, necesitaremos dominios registrados y configurados en algún servicio profesional como Namecheap, el registrador que usamos en chachocool.com.

En este tutorial configuraremos un par de servidores virtuales adicionales, para el subdominio blog.debian8.local.lan y para el dominio debian8mania.lan, de modo que podremos acceder a Nginx de tres formas distintas:

como instalar y configurar nginx en debian 8 jessie

Configuración

Empezaremos creando directorios para alojar los archivos web de cada sitio virtual:

~$ sudo mkdir /var/www/blog.debian8.local.lan /var/www/debian8mania.lan

Si quieres cambiar su contenido, el servidor virtual por defecto aloja sus archivos web en la carpeta /var/www/html/, aunque en este ejemplo no lo modificaremos.

Crearemos archivos index.html con algún mensaje que nos ayude a comprobar e identificar los sitios web de los servidores virtuales (o puedes colocar tu contenido web si ya lo tienes):

~$ sudo nano /var/www/blog.debian8.local.lan/index.html

Con un contenido como este, por ejemplo:

<h1>Bienvenidos a blog.debian8.local.lan</h1>
<small>Powered by Nignx</small>

Para el resto de servidores virtuales haríamos otro tanto.

Con los dominios configurados y el contenido web listo, es el momento de configurar los servidores virtuales. Para ello crearemos archivos de configuración en el subdirectorio sites-available/:

~$ sudo nano /etc/nginx/sites-available/blog.debian8.local.lan

Con el contenido:

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

        server_name blog.debian8.local.lan;

        root /var/www/blog.debian8.local.lan;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

Se trata de un bloque server que incluye directivas:

  • listen, indica el puerto de escucha, que para el protocolo HTTP estándar es el 80, habiendo una directiva para el protocolo IPv4 y otra para IPv6.
  • server_name hace referencia al dominio al que atenderá el servidor virtual.
  • root, la ruta de la carpeta de documentos web.
  • index, el archivo por defecto o índice, cuando no se indica ninguno en la URL.
  • location, un bloque sobre el que se puede configurar Nginx para una ruta concreta del servidor virtual, en este caso se aplica a la raíz y, por tanto, al sitio entero.
  • try_files, indica el orden en que se debe localizar el recurso solicitado (como archivo, como directorio o no existe).

Guardado el archivo, para activar la configuración es necesario crear el enlace simbólico en sites_enabled/:

~$ sudo ln -s /etc/nginx/sites-available/blog.debian8.local.lan /etc/nginx/sites-enabled/

Creamos este enlace con el mismo nombre que el archivo de configuración.

Recuerda seguir un procedimiento similar para cada servidor virtual que estés configurando.

Una vez creadas y activadas todas las configuraciones de los nuevos servidores virtuales, habrá que recargar la configuración de Nginx:

~$ sudo systemctl reload nginx

Comprobaremos el funcionamiento de los servidores virtuales de Nginx accediendo desde el navegador a todos los dominios:

instalar y configurar nginx en debian 8 jessie

Funciona justo como esperábamos.

Conexiones HTTPS con cifrado SSL para Nginx en Debian 8

Para configurar y trabajar con cifrado SSL y protocolo HTTPS en Nginx para Debian 8 en primer lugar es necesario disponer de certificados SSL asociados al dominio del servidor virtual que queremos proteger.

Si se trata de un servidor Debian 8 en Internet, necesitaremos que estos certificados SSL estén firmados por autoridades certificadoras, como los que puedes conseguir en sitios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Si se trata de un servidor web de pruebas, para red local, etc. puedes usar certificados autofirmados.

Por ejemplo, podemos crear un certificado autofirmado para el servidor por defecto (debian8.local.lan en este ejemplo):

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

Se nos solicitará cierta información para incorporarla al certificado, siendo especialmente importante el campo «Common Name«, donde indicaremos el dominio al que se asocia el certificado:

...
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:debian8.local.lan
Email Address []:
...

Hemos indicado /etc/ssl/private/ como ruta para la clave privada con la que se cifra la conexión, y /etc/ssl/certs/ como ruta para el certificado público, rutas adecuadas tanto para certificados firmados como autofirmados.

De modo similar puedes crear o instalar más certificados si los necesitas.

Ahora vamos a configurar el cifrado SSL para el servidor virtual por defecto, editando su configuración actual:

~$ sudo nano /etc/nginx/sites-available/default

Dentro de la configuración del bloque server principal podemos encontrar esto:

...
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
...

Se trata de un ejemplo de configuración mínima para activar el cifrado SSL en el servidor por defecto, que básicamente consiste en un par de directivas listen para activar la escucha en el puerto 443 (que es el estándar del servicio HTTPS), indicando además la activación del cifrado SSL.

La configuración de los certificados se realizaría incluyendo un archivo, snakeoil.conf, que contiene las directivas con las rutas a unos certificados autofirmados que se crean al instalar el paquete ssl-cert, que no está instalado por defecto, por lo que añadiremos de forma manual las directivas necesarias para cargar nuestros propios certificados (ya sean firmados o autofirmados).

Eliminando comentarios y líneas innecesarias, añadiendo la configuración de los certificados y activando las directivas desactivadas este fragmento podría quedar así:

...
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate /etc/ssl/certs/debian8.local.lan.crt
        ssl_certificate_key /etc/ssl/private/debian8.local.lan.key
...

Guardamos los cambios y cerramos el archivo.

Para otros servidores virtuales bastaría con añadir un bloque similar al anterior, adecuando las rutas de los certificados y eliminando default_server de las directivas listen. Por ejemplo, uno de los servidores virtuales de ejemplo que hemos configurado anteriormente podría quedar así:

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

        listen 443 ssl;
        listen [::]:443 ssl;
        ssl_certificate /etc/ssl/certs/blog.debian8.local.lan.crt;
        ssl_certificate_key /etc/ssl/private/blog.debian8.local.lan.key;

        server_name blog.debian8.local.lan;

        root /var/www/blog.debian8.local.lan;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

Finalmente aplicamos todos estos cambios recargando la configuración de Nginx:

~$ sudo systemctl reload nginx

Para probar las conexiones SSL, accedemos al servidor por defecto utilizando esta vez https:// en lugar de http:// en la URL:

cifrado ssl para nginx en debian 8 jessie

En el caso de tratarse de un certificado autofirmado, el navegador no podrá comprobar su autenticidad, por lo que mostrará un aviso, aunque siempre se suele ofrecer algún modo de confirmar que se entiende el riesgo y se quiere continuar con la conexión. Obviamente, esto no sucede con certificados firmados por autoridades certificadoras.

Accedemos finalmente a la versión cifrada del sitio web:

seguridad ssl para nginx en debian 8 jessie

Si hemos creado o instalado certificados para los dominios del resto de servidores virtuales y realizado los ajustes necesarios en sus archivos de configuración, podremos activar el cifrado SSL en el resto de servidores virtuales de Nginx:

Nginx para Debian 8 Jessie

Conclusión

Ahora que sabes cómo instalar y configurar Nginx en Debian 8 Jessie ya puedes servir sitios web desde tu servidor o VPS con una de las tecnologías más ampliamente usadas a lo largo y ancho de Internet.

Si te ha surgido alguna duda o pregunta, tienes sugerencias de mejora del artículo, crees que es necesario actualizarlo o quieres notificar algún error, puedes dejar un comentario que atenderé lo antes posible.

Y si ya puedes mostrar tus sitios web desde tu máquina gracias a esta guía de instalación y configuración de Nginx en Debian 8 Jessie, y te apetece mostrar tu agradecimiento, puedes hacerlo dejando 1 $ como propina desde PayPal:

O, si te sientes especialmente generoso, invitándome a un café:

¡Gracias!

5/5 - (1 voto)

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.