Cómo instalar Nginx en FreeBSD 12

En esta ocasión vamos a ver cómo instalar Nginx en FreeBSD 12 paso a paso. Este es uno de los servidores web más usados en Internet por su rapidez y ligereza. Al final de esta guía tendrás funcionando Nginx en tu servidor o VPS FreeBSD incluyendo servidores virtuales y seguridad SSL a través de HTTPS.

Antes de instalar Nginx en FreeBSD 12

Para seguir esta guía de instalación de Nginx en FreeBSD 12 se necesitan unos pequeños requisitos:

  • Una máquina FreeBSD 12 actualizada.
  • Acceso por consola como root o usuario con privilegios de sudo.
  • Conexión a Internet.

Seguramente estás consultando esta guía porque ya cumples estos puntos, así que vamos a abrir una terminal y ponernos a trabajar.

Cómo instalar Nginx en FreeBSD 12

Para instalar Nginx en FreeBSD 12 usaremos los paquetes del mismo repositorio del sistema, así que en primer lugar actualizamos la información del mismo:

$ sudo pkg update

Y ya podemos instalar el paquete nginx con pkg:

$ sudo pkg install -y nginx

Tras descargar e instalar Nginx y sus dependencias se crea el servicio nginx en nuestro sistema FreeBSD 12 pero, como suele ser habitual siempre que se instala un nuevo servicio, no queda iniciado ni habilitado tras la instalación.

Para que Nginx inicie automáticamente en cada arranque de FreeBSD 12, habilitaremos el servicio:

$ sudo service nginx enable

Y para iniciarlo por primera vez, arrancaremos el servicio manualmente:

$ sudo service nginx start

Podremos comprobar que este servicio web ya ha quedado en ejecución con la opción status del comando service:

$ service nginx status
nginx is running as pid 883.

¿Qué versión de Nginx tengo instalada en FreeBSD 12?

Si necesitas saber la versión de Nginx que has instalado en FreeBSD 12 es muy fácil averiguarlo desde consola, basta con usar el parámetro -v del comando nginx:

$ nginx -v
nginx version: nginx/1.20.1

Cómo probar el servicio Nginx en FreeBSD 12

Como el servidor web está funcionando y listo para aceptar conexiones, podemos comprobar el funcionamiento de Nginx en FreeBSD 12 a través de un navegador usando como URL la dirección IP o el nombre DNS de nuestra máquina.

Por ejemplo, la máquina FreeBSD 12 sobre la que hemos preparado este tutorial es accesible en el subdominio freebsd12.local.lan, así que usaremos http://freebsd12.local.lan como URL:

como instalar el servidor web nginx en freebsd 12
Comprobación de la instalación de Nginx en FreeBSD 12

Efectivamente, nuestra máquina FreeBSD 12 está sirviendo contenido a través del servicio Nginx.

Cómo configurar Nginx en FreeBSD 12

Al momento de configurar Nginx en FreeBSD 12 debemos tener en cuenta que la ruta de los archivos de configuración es /usr/local/etc/nginx/, siendo nginx.conf el archivo principal.

Datos que podríamos averiguar examinando el contenido de nginx.conf es que el sitio web por defecto (que acabamos de ver en el navegador) está en /usr/local/www/nginx/, lo que ya nos da una pista de que un buen lugar para ubicar nuestros proyectos web podría ser /usr/local/www/.

Hagamos una prueba rápida creando una ruta para un nuevo sitio web por defecto en /usr/local/www/pruebas/:

$ sudo mkdir /usr/local/www/pruebas/

Creamos un archivo index.html:

$ sudo nano /usr/local/www/pruebas/index.html

Y como contenido podemos poner cualquier cosa:

<h1>Bienvenidos a FreeBSD 12</h1>
<small>Powered by Nginx</small>

Ahora editamos el archivo de configuración principal de Nginx, ngnix.conf, para cambiar la ubicación del nuevo sitio web por defecto:

$ sudo nano /usr/local/etc/nginx/nginx.conf

Buscaremos dentro del bloque http el primer bloque server y dentro de este el bloque location:

...
location / {
    root   /usr/local/www/nginx;
    index  index.html index.htm;
}
...

La directiva root indica la ruta del directorio de archivos web del servidor, así que sólo tendríamos que editar esta línea e indicar la nueva ruta que acabamos de preparar:

...
location / {
    root   /usr/local/www/pruebas;
    index  index.html index.htm;
}
...

Una vez guardados los cambios y de vuelta a la línea de comandos, hay que recargar la configuración de Nginx para aplicarlos:

$ sudo service nginx reload
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

Y accedemos de nuevo a través del navegador al servidor:

como configurar el servidor web nginx en freebsd 12

Justo lo que esperábamos. Ya sabes cómo hacer cambios de configuración y aplicarlos. Vamos a ver algunas cosas más.

Servidores virtuales de Nginx en FreeBSD 12

Una de las características más apreciadas y valiosas de un servidor web cuando tienes un servidor o VPS FreeBSD es la capacidad de trabajar con servidores virtuales. Nginx nos ofrece también esta potentísima característica, con la que podremos servir varios sitios web con distintos dominios en el mismo servidor FreeBSD 12.

Obviamente, si vas a configurar un servidor virtual para un dominio, necesitarás tener dicho dominio registrado y configurado apuntando a tu máquina FreeBSD 12.

Si aún no has registrado el dominio, me atrevo a recomendarte Namecheap, que es donde registro y renuevo los dominios de todos mis sitios web, como el que estás visitando en este momento.

Siguiendo con la guía, crearé un servidor virtual para el dominio blog.freebsd12.local.lan. Este dominio ya apunta a mi máquina FreeBSD 12, por lo que si accedo a él a través de un navegador mostrará la página por defecto de Nginx.

Directorio de configuraciones para los servidores

Si has observado la configuración de Nginx en el archivo nginx.conf, habrás visto que básicamente se trata de un bloque http que contiene entre otras cosas un gran bloque server (que define el sitio web por defecto), pero que contiene otro bloque server desactivado.

Básicamente los servidores virtuales consisten en bloques server adicionales que se asocian a dominios distintos.

Pero en vez de añadir estos bloques server en nginx.conf, crearemos un subdirectorio exclusivo para su configuración:

$ sudo mkdir /usr/local/etc/nginx/sites.d

Y editaremos nginx.conf para añadir una directiva que incluya los distintos archivos de configuración de servidores virtuales que existan en ese nuevo directorio:

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

Cerca del final del archivo, y dentro del bloque http, añadiremos esta línea:

...
    #}

        include sites.d/*.conf;
}

Añadiendo servidores virtuales

Crearemos el directorio donde alojaremos los archivos web del servidor virtual:

$ sudo mkdir /usr/local/www/blog.freebsd12.local.lan

Nos concederemos la propiedad del directorio para no tener que usar sudo con el contenido de este directorio (si te parece oportuno):

$ sudo chown $USER:$USER /usr/local/www/blog.freebsd12.local.lan/

Crearemos un archivo index.html por tener un contenido mínimo:

$ nano /usr/local/www/blog.freebsd12.local.lan/index.html

Cualquier contenido servirá:

<h1>Blog de freebsd12.local.lan</h1>

Y empezamos con lo interesante, el archivo de configuración de este servidor virtual, en el subdirectorio que preparamos al efecto:

$ sudo nano /usr/local/etc/nginx/sites.d/blog.freebsd12.local.lan.conf

El contenido será este:

server {
        listen  80;
        server_name blog.freebsd12.local.lan;
        location / {
                root /usr/local/www/blog.freebsd12.local.lan;
        }
        error_log /var/log/nginx/blog.freebsd12.local.lan-error.log;
        access_log /var/log/nginx/blog.freebsd12.local.lan-access.log;
}

La explicación de esta configuración es sencilla:

  • Un bloque server que encierra la configuración del servidor virtual.
  • La directiva server_name en la que indicamos el dominio al que responderá el servidor virtual.
  • El bloque location /, que define las características de la raíz del directorio web (y su contenido).
  • La directiva root que indica la ruta del directorio web.
  • Y error_log y access_log que definen los archivos de registro de errores y accesos, respectivamente, para este servidor.

Dependiendo de las características de la aplicación web que instales, necesitarás ir afinando más o menos la configuración.

Guardados los cambios, hay que recargar la configuración de Nginx:

$ sudo service nginx reload

Y ahora podemos acceder al servicio web de la máquina FreeBSD 12 mediante los distintos dominios:

En este momento tenemos funcionando la página por defecto del servidor y un servidor virtual adicional, pero podemos repetir el proceso para alojar tantos servidores virtuales como los recursos de la máquina permitan.

Seguridad SSL por HTTPS en Nginx para FreeBSD 12

Para trabajar con conexiones seguras SSL a través del protocolo HTTPS con Nginx en FreeBSD 12 será necesario disponer de claves y certificados. En caso de tratarse de un servicio disponible a través de Internet es muy importante que dichos certificados estén firmados o emitidos por autoridades certificadoras, tales como los que proporcionan servicios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Si se trata de un servicio en pruebas, puedes crear claves y certificados autofirmados con el comando openssl, creando previamente un directorio donde guardar estos archivos:

~$ sudo mkdir /usr/local/etc/nginx/certificados.d

Y lanzando el comando openssl para su creación:

$ sudo openssl req -newkey rsa:2048 -nodes -days 3650 -x509 -out /usr/local/etc/nginx/certificados.d/freebsd12.local.lan.crt -keyout /usr/local/etc/nginx/certificados.d/freebsd12.local.lan.key

Este comando es interactivo y solicita información para incorporarla al certificado, como puede ser el código de país, nombre de la organización, etc.

Es importante que el campo «Common Name» coincida con el dominio o nombre DNS con el que se accederá al sitio web:

...
Common Name (e.g. server FQDN or YOUR name) []:freebsd12.local.lan
...

Ya podemos configurar Nginx para utilizar el nuevo certificado, para lo que editamos el archivo de configuración principal:

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

Añadiremos algunas directivas en el bloque server correpondiente al sitio web por defecto (de forma análoga se haría en el caso de los bloques server de servidores virtuales):

...
    server {
        listen  80;
        listen 443 ssl;
        server_name localhost;
        ssl_certificate /usr/local/etc/nginx/certificados.d/freebsd12.local.lan.crt;
        ssl_certificate_key /usr/local/etc/nginx/certificados.d/freebsd12.local.lan.key;
...
    }
...

Hemos añadido una directiva listen en la que se indica el puerto estándar del protocolo HTTPS (443) indicando que se use este protocolo (ssl).

Además hemos añadido las directivas ssl_certificate y ssl_certificate_key en las que indicamos las rutas del certificado y su clave privada.

Guardamos los cambios y recargamos la configuración del servicio web:

~$ sudo service nginx reload

Para comprobar el funcionamiento del servicio, accedemos una vez más al dominio que estamos configurando, pero usando https:// en lugar de http:// en la URL.

Siguiendo el ejemplo de este tutorial, ahora sería https://freebsd12.local.lan la nueva URL.

Si hemos utilizado certificados autofirmados, el navegador mostrará un aviso:

como instalar y configurar nginx en freebsd 12

Esto es normal, ya que el navegador no puede comprobar la autenticidad de dichos certificados. Dependiendo del navegador dispondremos de medios para continuar con la conexión, mostrándose la versión segura del sitio web:

certificados ssl en nginx para freebsd 12

Si usamos certificados firmados por autoridades certificadoras accederemos directamente, sin nigún tipo de advertencia o mensaje de error.

Conclusión

Ahora ya sabes cómo instalar Nginx en FreeBSD 12. Siguiendo esta guía serás capaz de usar tu servidor o VPS FreeBSD 12 para poder alojar tantas aplicaciones y sitios web como necesites, usando dominios distintos y proporcionando seguridad SSL. ¡Escálalo cuanto necesites!

Para cualquier duda, sugerencia, error o consulta, puedes dejar un comentario.

¡Apoya comoinstalar.me!

Si creías que instalar y configurar Nginx en FreeBSD 12 sería una locura ya has comprobado que no es así. En caso de que desees agradecérnoslo, puedes contribuir mínimamente al mantenimiento de este sitio dejando una propina a partir de 1 $ desde PayPal:

O, si te sientes especialmente generoso, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario