En esta entrada veremos cómo instalar el servidor Nginx en FreeBSD 11 paso a paso, de forma que podamos ofrecer contenido web desde nuestro servidor o VPS FreeBSD, mediante protocolo estándar o seguro con cifrado SSL.
Contenido
Antes de instalar Nginx en FreeBSD 11
Si vas a seguir los pasos de esta guía de instalación de Nginx en FreeBSD 11 es importante partir de estos requisitos básicos:
- Una máquina FreeBSD 11 debidamente actualizada.
- Acceso a consola con un usuario con permisos de sudo.
- Conexión a Internet.
Además, si quieres servir uno o más sitios web desde Internet necesitarás tener registrados dominios en algún servicio profesional como Namecheap, configurados para apuntar a tu servidor FreeBSD 11.
Cómo instalar Nginx en FreeBSD 11
Vamos a instalar Nginx en FreeBSD 11 desde los repositorios del sistema, por lo que empezamos actualizando la información de los mismos:
~$ sudo pkg update
El paquete que instalamos con pkg es nginx:
~$ sudo pkg install -y nginx
Una vez descargado e instalado el paquete se crea un nuevo servicio en FreeBSD 11, el servicio nginx, pero no queda habilitado ni en ejecución.
Para habilitar Nginx editaremos el archivo de rc.conf de FreeBSD 11:
~$ sudo nano /etc/rc.conf
Añadimos la siguiente línea al final del archivo:
... nginx_enable="YES"
Una vez guardados los cambios, podemos inciar Nginx con el comando service:
~$ sudo service nginx start
Podemos comprobar que el servicio Nginx se encuentra en ejecución con el comando sudo service nginx status
:
Versión instalada
Para saber qué versión de Nginx tienes instalada en FreeBSD 11 puedes hacerlo con el comando nginx -v
:
~$ nginx -v nginx version: nginx/1.18.0
Cómo probar Nginx en FreeBSD 11
Con el servicio en ejecución podemos probar Nginx en FreeBSD 11 desde un navegador accediendo a la dirección IP, dominio, nombre DNS, localhost, etc. según corresponda.
Por ejemplo, el servidor FreeBSD 11 sobre el que hemos preparado este artículo es accesible en el subdominio freebsd11.local.lan, así que podemos emplear http://freebsd11.local.lan como URL:
Debería mostrarse la página del sitio web por defecto de Nginx.
Cómo configurar Nginx en FreeBSD 11
Para configurar Nginx en FreeBSD 11 hay que saber que sus archivos de configuración residen en la ruta /usr/local/etc/nginx/, siendo el archivo principal nginx.conf. Dentro de este archivo se encuentran los ajustes por defecto del servicio, incluyendo el contenido de otros archivos, y se declara el servidor virtual por defecto que es el que muestra el sitio web que acabamos de probar.
La ruta donde residen los archivos del sitio web por defecto es /usr/local/www/nginx/, y es donde podrías ubicar los archivos de tu propio sitio o aplicación web.
Cómo configurar servidores virtuales para Nginx sobre FreeBSD 11
Además del servidor por defecto, podemos configurar servidores virtuales adicionales que respondan a otros dominios. Previamente estos dominios deben estar dados de alta o registrados apuntando al servidor FreeBSD 11, de modo que todos muestren la página por defecto que vimos en pasos anteriores.
Para ello crearemos archivos de configuración independientes que serán incluidos desde el archivo principal, nginx.conf.
Creamos un directorio donde tener organizados los archivos de configuración para los servidores virtuales:
~$ sudo mkdir /usr/local/etc/nginx/vhosts.d
Para que se tengan en cuenta los archivos de configuración presentes en este nuevo directorio, editamos nginx.conf:
~$ sudo nano /usr/local/etc/nginx/nginx.conf
Insertamos una directiva include al final del archivo, justo antes de la última llave de cierre:
... #} include vhosts.d/*.conf; }
Sólo es necesario indicar la ruta relativa desde el directorio de configuración de Nginx. Ya podemos guardar y cerrar el archivo.
Ahora prepararemos un contenido de prueba para cada servidor virtual que configuremos (o directamente el contenido web si está listo):
~$ sudo mkdir /usr/local/www/freebsd11.com /usr/local/www/solofreebsd11.net
En cada directorio creamos un archivo index.html con un mensaje identificativo, por ejemplo, para el servidor virtual de este tutorial, freebsd11.com:
~$ sudo nano /usr/local/www/freebsd11.com/index.html
Con el contenido:
<h1>Bienvenidos a freebsd11.com</h1> <span>Powered by Nginx</span>
Terminada la creación o ubicación del contenido web para cada servidor virtual, procedemos a crear los archivos de configuración.
Creamos un nuevo archivo para el primer servidor virtual adicional:
~$ sudo nano /usr/local/etc/nginx/vhosts.d/freebsd11.com.conf
El contenido será un bloque server similar al siguiente:
server { listen 80; server_name freebsd11.com; location / { root /usr/local/www/freebsd11.com; } error_log /var/log/nginx/freebsd11.com-error.log; access_log /var/log/nginx/freebsd11.com-access.log; }
Dentro de este bloque podemos apreciar las siguientes directivas:
- listen, que hace referencia al puerto en el que escuchará este servidor virtual, que en este caso es el estándar (80).
- server_name, muy importante, ya que indica a qué dominio responderá este servidor virtual.
- location, configura rutas dentro del sitio web, en este caso la ruta raíz que se asigna al directorio para el contenido web de este servidor virtual.
- error_log y access_log, para indicar los archivos en los que se guardará el registro de errores y accesos, respectivamente.
Guardados este y el resto (si los hay) de archivos de configuración de los servidores virtuales, sólo queda recargar la configuración del servicio:
~$ sudo service nginx reload
Ahora podemos visitar todos los dominios que hemos configurado en los servidores virtuales y veremos que para cada dominio se obtiene el sitio web que se haya configurado:
Cómo configurar seguridad SSL para Nginx en FreeBSD 11
Si vas a ofrecer contenido a través de Internet o en ambientes donde la seguridad importa, debes configurar Nginx con seguridad SSL en FreeBSD 11, empleando claves y certificados que puedes obtener desde servicios profesionales como Namecheap:
Para pruebas, entornos domésticos, etc. puedes trabajar con certificados autofirmados generados en el propio servidor FreeBSD 11.
Crearemos un subdirectorio donde almacenar las claves privadas y públicas que utilicen los distintos servidores virtuales de Nginx:
~$ sudo mkdir /usr/local/etc/nginx/certificados.d
Situaremos en este directorio los archivos que componen la clave, si los hemos obtenido desde una autoridad certificadora, o los generaremos directamente si se trata de un servidor para pruebas:
~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out /usr/local/etc/nginx/certificados.d/freebsd11.local.lan.crt -keyout /usr/local/etc/nginx/certificados.d/freebsd11.local.lan.key
Este comando crea el par de claves privada/pública en la ubicación que indiquemos, lanzando una serie de preguntas con el fin de incorporar opcionalmente información identificativa al certificado. Es importante especialmente indicar el dominio para el que creamos el certificado, en la pregunta «Common Name«:
... Common Name (e.g. server FQDN or YOUR name) []:freebsd11.local.lan ...
Terminado este paso, editamos el archivo nginx.conf para añadir la configuración SSL:
~$ sudo nano /usr/local/etc/nginx/nginx.conf
El último bloque server del archivo principal es un ejemplo de cómo configurar el servidor por defecto con seguridad SSL:
... # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} ...
Podríamos aprovechar este mismo bloque, habilitándolo y modificando los valores por defecto, o simplemente añadir un nuevo bloque server:
... server { listen 443 ssl; ssl_certificate certificados.d/freebsd11.local.lan.crt; ssl_certificate_key certificados.d/freebsd11.local.lan.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/local/www/nginx; } } ...
Guardados los cambios, recargamos la configuración del servicio:
~$ sudo service nginx reload
Y accedemos al sitio por defecto, pero esta vez usando el protocolo HTTPS. Por ejemplo, para el servidor de pruebas de este artículo accedemos con https://freebsd11.local.lan como URL:
En el caso de usar certificados autofirmados el navegador puede mostrar un aviso, debido a que no puede garantizar la autenticidad de los mismos, pero siempre es posible continuar de algún modo con la conexión para mostrar la versión HTTPS del sitio web.
En lugar de añadir un nuevo bloque server podríamos haber añadido las nuevas directivas en el bloque server existente para el protocolo HTTP (puerto 80). Veremos un ejemplo a continuación.
SSL para servidores virtuales de Nginx en FreeBSD 11
Ubicaremos los certificados en el directorio que hemos preparado, o los generaremos si se trata de certificados autofirmados (indicando el dominio correspondiente en la pregunta «Common Name«):
~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out /usr/local/etc/nginx/certificados.d/freebsd11.com.crt -keyout /usr/local/etc/nginx/certificados.d/freebsd11.com.key
Repetiremos el proceso para todos los servidores virtuales que configuremos.
Abrimos el archivo de configuración de cada servidor virtual:
~$ sudo nano /usr/local/etc/nginx/vhosts.d/freebsd11.com.conf
Y añadimos la directivas para la configuración SSL dentro del bloque server existente:
server { listen 80; listen 443 ssl; server_name freebsd11.com; ssl_certificate certificados.d/freebsd11.com.crt; ssl_certificate_key certificados.d/freebsd11.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/local/www/freebsd11.com; } error_log /var/log/nginx/freebsd11.com-error.log; access_log /var/log/nginx/freebsd11.com-access.log; }
Una vez terminada la instalación de todos los certificados y claves SSL y actualizada la configuración de los servidores virtuales, podemos recargar la configuración del servicio:
~$ sudo service nginx reload
Y ya estarán disponibles todas las versiones seguras de nuestros distintos sitios virtuales en Nginx:
Conclusión
Ahora que sabes cómo instalar Nginx en FreeBSD 11 ya puedes servir contenido web para uno o más sitios mediante servidores virtuales, con la posibilidad de ofrecer conexiones seguras para usuarios y vicepresidentes.
¡Apoya comoinstalar.me!
Si ya tienes Nginx funcionando en FreeBSD 11 gracias a esta guía y quieres agradecérnoslo ayudando mínimamente al mantenimiento de este sitio, puedes hacerlo invitándonos a un café:
O dejando 1 $ de propina con Paypal:
¡Gracias!