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.
Contenido
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:
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:
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:
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:
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:
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!