Nginx es uno de los servidores web más populares del mundo y aloja algunos de los sitios más grandes y de mayor tráfico de Internet. Es más fácil de utilizar que Apache en la mayoría de los casos y puede emplearse como servidor web o proxy inverso.
En esta guía, explicaremos la manera de instalar Nginx en su servidor de Debian 9.
Antes de comenzar a aplicar esta guía, debe disponer de un usuario no root normal con privilegios sudo configurado en su servidor y un firewall activo. Puede aprender a hacerlo siguiendo la guía de configuración inicial de servidores para Debian 9.
Cuando disponga de una cuenta, inicie sesión como usuario no root para comenzar.
Debido a que Nginx está disponible en los repositorios predeterminados de Debian, es posible instalarlo desde estos repositorios usando el sistema de paquetes apt
.
Debido a que se trata de nuestra primera interacción con el sistema de paquetes apt
en esta sesión, también actualizaremos nuestro índice local de paquetes de modo que tengamos acceso los listados de paquetes más recientes. A continuación, podremos instalar nginx
:
- sudo apt update
- sudo apt install nginx
Tras aceptar el procedimiento, apt
instalará Nginx y cualquier dependencia necesaria en su servidor.
Antes de probar Nginx, se deben aplicar ajustes al software del firewall para permitir el acceso al servicio.
Enumere las configuraciones de la aplicación con las que ufw
sabe trabajar escribiendo lo siguiente:
- sudo ufw app list
Debería obtener un listado de los perfiles de aplicación:
OutputAvailable applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...
Como puede ver, hay tres perfiles disponibles para Nginx:
80
(tráfico web normal, no cifrado) y el puerto 443
(tráfico TLS/SSL cifrado)80
(tráfico web normal, no cifrado)443
(tráfico TLS/SSL cifrado)Se recomienda habilitar el perfil más restrictivo, que de todos modos permitirá el tráfico que configuró. Debido a que en esta guía aún no configuramos SSL para nuestro servidor, solo deberemos permitir el tráfico en el puerto 80
.
Puede habilitarlo escribiendo lo siguiente:
- sudo ufw allow 'Nginx HTTP'
Puede verificar el cambio escribiendo lo siguiente:
- sudo ufw status
Debería ver el tráfico HTTP permitido en el resultado que se muestra:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Al final del proceso de instalación, Debian 9 inicia Nginx. El servidor web ya debería estar activo.
Realice una verificación con systemd init
para asegurarse de que el servicio esté en ejecución escribiendo lo siguiente:
- systemctl status nginx
Output● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-09-04 18:15:57 UTC; 3min 28s ago
Docs: man:nginx(8)
Process: 2402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2399 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2404 (nginx)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/nginx.service
├─2404 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2405 nginx: worker process
Como puede ver arriba, parece que el servicio se inició correctamente. Sin embargo, la mejor forma de comprobarlo es solicitar una página de Nginx.
Puede acceder a la página de aterrizaje predeterminada de Nginx para confirmar que el software funcione correctamente dirigiéndose a la dirección IP de su servidor. Si no conoce la dirección IP de su servidor, intente escribir lo siguiente en la instrucción de comandos de su servidor:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Obtendrá algunas líneas. Puede probar cada una de ellas en su navegador web para ver si funcionan.
Cuando tenga la dirección IP de su servidor, introdúzcala en la barra de direcciones de su navegador:
http://your_server_ip
Debería ver la página de aterrizaje predeterminada de Nginx:
Esta página se incluye con Nginx para mostrarle que el servidor se ejecuta correctamente.
Ahora que su servidor web está listo, revisaremos algunos de los comandos básicos de administración.
Para detener su servidor web, escriba lo siguiente:
- sudo systemctl stop nginx
Para iniciar el servidor web cuando no esté activo, escriba lo siguiente:
- sudo systemctl start nginx
Para detener y luego iniciar el servicio de nuevo, escriba lo siguiente:
- sudo systemctl restart nginx
Si simplemente realizará cambios en la configuración, Nginx a menudo puede volver a cargase sin perder conexiones. Para hacer esto, escriba lo siguiente:
- sudo systemctl reload nginx
De forma predeterminada,Nginx está configurado para iniciarse automáticamente cuando lo haga el servidor. Si no es lo que quiere, deshabilite este comportamiento escribiendo lo siguiente:
- sudo systemctl disable nginx
Para volver a habilitar el servicio de modo que se cargue en el inicio, puede escribir lo siguiente:
- sudo systemctl enable nginx
Al emplear el servidor web Nginx, se pueden utilizar_ bloques de servidor_ (similares a hosts virtuales de Apache) para encapsular los detalles de la configuración y alojar más de un dominio desde un único servidor. Configuraremos un dominio llamado example.com, pero debería cambiarlo por el nombre de su propio dominio. Consulte nuestra introducción a DNS de DigitalOcean para hallar más información sobre la configuración de un nombre de dominio con DigitalOcean.
Nginx en Debian 9 tiene habilitado un bloque de servidor por defecto, que está configurado para presentar documentos desde un directorio en /var/www/html
. Si bien esto funciona bien para un solo sitio, puede ser difícil de manejar si aloja varios. En vez de modificar /var/www/html
, crearemos una estructura de directorios dentro de /var/www
para nuestro sitio example.com y dejaremos /var/www/html
como directorio predeterminado que se abastecerá si una solicitud de cliente no coincide con otros sitios.
Cree el directorio para example.com, utilizando el indicador -p
para crear cualquier directorio principal necesario:
- sudo mkdir -p /var/www/example.com/html
A continuación, asigne la propiedad del directorio con la variable de entorno $USER:
- sudo chown -R $USER:$USER /var/www/example.com/html
Los permisos de sus root web deberían ser correctos si no modificó el valor umask
, pero puede comprobarlo escribiendo lo siguiente:
- sudo chmod -R 755 /var/www/example.com
A continuación, cree una página de ejemplo index.html
utilizando nano
o su editor favorito:
- nano /var/www/example.com/html/index.html
Dentro de ella, agregue el siguiente ejemplo de HTML:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
Guarde y cierre el archivo cuando termine.
Para que Nginx presente este contenido, es necesario crear un bloque de servidor con las directivas correctas. En vez de modificar el archivo de configuración predeterminado directamente, crearemos uno nuevo en /etc/nginx/sites-available/example.com
:
- sudo nano /etc/nginx/sites-available/example.com
Péguelo en el siguiente bloque de configuración, similar al predeterminado, pero actualizado para nuestro nuevo directorio y nombre de dominio:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Observe que actualizamos la configuración root
en nuestro nuevo directorio y el server_name
para nuestro nombre de dominio.
A continuación, habilitaremos el archivo creando un enlace entre él y el directorio sites-enabled
, en el cual Nginx obtiene lecturas durante el inicio:
- sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Ahora, contamos con dos bloques de servidor habilitados y configurados para responder a las solicitudes conforme a las directivas listen
y server_name
(puede obtener más información sobre cómo Nginx procesa estas directivas aquí):
example.com
: responderá a solicitudes de example.com
y www.example.com
.default
: responderá a cualquier solicitud en el puerto 80
que no coincida con los otros dos bloques.Para evitar un problema de memoria de depósito de hash que pueda surgir al agregar nombres de servidor, es necesario aplicar ajustes a un valor en el archivo /etc/nginx/nginx.conf
. Abra el archivo:
- sudo nano /etc/nginx/nginx.conf
Encuentre la directiva server_names_hash_bucket_size
y elimine el símbolo #
para quitar el comentario de la línea:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Guarde y cierre el archivo cuando termine.
A continuación, compruebe que no haya errores de sintaxis en ninguno de sus archivos de Nginx:
- sudo nginx -t
Si no hay problemas, verá el siguiente resultado:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Una vez superada la prueba de configuración, reinicie Nginx para habilitar sus cambios:
- sudo systemctl restart nginx
Con esto, Nginx debería proporcionar su nombre de dominio. Puede comprobarlo visitando http://example.com
, donde debería ver algo como lo siguiente:
Ahora que sabe administrar el propio servicio de Nginx, debería tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.
/var/www/html
: el contenido web real, que por defecto solo consta de la página predeterminada de Nginx que vio antes, se presenta desde el directorio /var/www/html
. Esto se puede cambiar modificando los archivos de configuración de Nginx./etc/nginx
: directorio de configuración de Nginx. En él se encuentran todos los archivos de configuración de Nginx./etc/nginx/nginx.conf
: archivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración general de Nginx./etc/nginx/sites-available/
: directorio en el que se pueden guardar bloques de servidor por sitio. Nginx no utilizará los archivos de configuración de este directorio a menos que estén vinculados al directorio sites-enabled
. Normalmente, toda la configuración del bloque de servidor se realiza en este directorio y luego se habilita estableciendo un vínculo con el otro directorio./etc/nginx/sites-enabled/
: directorio en el que se almacenan los bloques de servidor habilitados por sitio. Normalmente, estos se crean estableciendo vínculos con los archivos de configuración del directorio sites-available
./etc/nginx/snippets
: este directorio contiene fragmentos de configuración que pueden incluirse en otras partes de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles reúnen las condiciones para la conversión a fragmentos./var/log/nginx/access.log
: cada solicitud a su servidor web se registra en este archivo de registro, a menos que Nginx esté configurado para hacer algo diferente./var/log/nginx/error.log
: cualquier error de Nginx se asentará en este registro.Ahora que instaló su servidor web, dispone de muchas opciones respecto del tipo de contenido que puede ofrecer y de las tecnologías que puede utilizar para brindar una experiencia más completa a sus usuarios.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!