Instalar Nginx en Ubuntu 18.04
Instalar Nginx en Ubuntu 18.04
Introducción
Instalar Nginx en Ubuntu 18.04. Nginx es uno de los servidores web más populares del mundo y es responsable de alojar algunos de los sitios más grandes y de mayor tráfico en Internet. En la mayoría de los casos, es más amigable con los recursos que Apache y puede usarse como servidor web o proxy inverso.
En este tutorial, discutiremos el cómo instalar Nginx en su servidor Ubuntu 18.04.
Requisitos previos
Antes de comenzar con este tutorial, debe tener un usuario común y no root con privilegios sudo configurados en su servidor. Puede aprender a configurar una cuenta de usuario normal siguiendo nuestro tutorial Configuración Inicial del Servidor para Ubuntu
Cuando tenga una cuenta disponible, inicie sesión como usuario no root.
Paso 1. Instalando Nginx
Debido a que Nginx está disponible en los repositorios predeterminados de Ubuntu, es posible instalarlo desde estos repositorios utilizando el sistema de empaquetado apt
.
Dado que esta es nuestra primera interacción con el sistema de empaquetado apt
en esta sesión, actualizaremos nuestro índice de paquete local para que tengamos acceso a las listas de paquetes más recientes. Luego, podemos instalar Nginx
:
sudo apt update
sudo apt install nginx
Después de aceptar el procedimiento, apt
instalará Nginx y todas las dependencias necesarias en su servidor.
Paso 2. Ajustes del Firewall
Antes de probar Nginx, el software de firewall debe ajustarse para permitir el acceso al servicio. Nginx se registra a sí mismo como un servicio con ufw
al momento de la instalación, por lo que es sencillo permitir el acceso a Nginx.
Enumere las configuraciones de la aplicación que ufw
sabe cómo trabajar escribiendo:
sudo ufw app list
Deberías obtener una lista de los perfiles de las aplicaciones:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Como puede ver, hay tres perfiles disponibles para Nginx:
- Nginx Full. Este perfil abre tanto el puerto 80 (tráfico web normal no encriptado) como el puerto 443 (tráfico encriptado TLS / SSL)
- Nginx HTTP. Este perfil abre solo el puerto 80 (tráfico web normal no encriptado)
- Nginx HTTPS. Este perfil abre solo el puerto 443 (tráfico encriptado TLS / SSL)
Se recomienda que habilite el perfil más restrictivo que aún permita el tráfico que ha configurado. Debido a que aún no hemos configurado SSL para nuestro servidor en esta guía, solo necesitaremos permitir el tráfico en el puerto 80.
Puede habilitar esto escribiendo:
sudo ufw allow 'Nginx HTTP'
Puede verificar el cambio escribiendo:
sudo ufw status
Debería ver el tráfico HTTP permitido en la salida mostrada:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Paso 3. Verificando tu servidor web
Al final del proceso de instalación, Ubuntu 18.04 inicia Nginx. El servidor web ya debería estar en funcionamiento.
Podemos verificar con el sistema de inicio systemd
para asegurarnos de que el servicio se está ejecutando tecleando:
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 Fri 2018-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Como puede ver arriba, el servicio parece haber comenzado con éxito. Sin embargo, la mejor manera de probar esto es solicitar una página de Nginx.
Puede acceder a la página de inicio de Nginx predeterminada para confirmar que el software se está ejecutando correctamente navegando a la dirección IP de su servidor. Si no conoce la dirección IP de su servidor, puede obtenerla de diferentes maneras.
Intente escribir esto en el símbolo del sistema de su servidor:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Recibirás unas pocas líneas. Puede probar cada uno en su navegador web para ver si funcionan.
Una alternativa es tipear esto, que debería darle su dirección IP pública como se ve desde otra ubicación en Internet:
curl -4 icanhazip.com
Cuando tengas la dirección IP de tu servidor, ingrésala en la barra de direcciones de tu navegador:
http://your_server_ip
Debería ver la página de inicio de Nginx predeterminada:
Esta página está incluida con Nginx para mostrarle que el servidor se está ejecutando correctamente.
Paso 4. Administración del proceso Nginx
Ahora que tiene su servidor web en funcionamiento, repasemos algunos comandos básicos de administración.
Para detener su servidor web, escriba:
sudo systemctl stop nginx
Para iniciar el servidor web cuando está detenido, escriba:
sudo systemctl start nginx
Para detener y luego volver a iniciar el servicio, escriba:
sudo systemctl restart nginx
Si simplemente hace cambios de configuración, Nginx a menudo puede volver a cargar sin soltar conexiones. Para hacer esto, escribe:
sudo systemctl reload nginx
Por defecto, Nginx está configurado para iniciarse automáticamente cuando se inicia el servidor. Si esto no es lo que quiere, puede desactivar este comportamiento escribiendo:
sudo systemctl disable nginx
Para volver a habilitar el servicio para que se inicie en el arranque, puede escribir:
sudo systemctl enable nginx
Paso 5. Configuración de bloques de servidor (recomendado)
Al utilizar el servidor web Nginx, los bloques de servidor (similares a los hosts virtuales en Apache) se pueden usar para encapsular detalles de configuración y alojar más de un dominio desde un único servidor. Configuraremos un dominio llamado example.com , pero debe reemplazarlo con su propio nombre de dominio .
Nginx en Ubuntu 18.04 tiene un bloque de servidores habilitado por defecto que está configurado para entregar documentos fuera de un directorio en /var/www/html
. Si bien esto funciona bien para un solo sitio, puede resultar difícil de manejar si aloja varios sitios. En lugar de modificar /var/www/html
, creemos una estructura de directorio dentro de /var/www
para nuestro sitio example.com , dejando /var/www/html
en su lugar como el directorio predeterminado para ser servido si la solicitud de un cliente no lo hace emparejar otros sitios.
Cree el directorio para example.com de la siguiente manera, usando el indicador -p
para crear cualquier directorio padre 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 tus root web deberían ser correctos si no has modificado tu valor de umask
, pero puedes asegurarte escribiendo:
sudo chmod -R 755 /var/www/example.com
Luego, crea una página de muestra index.html
usando nano
o tu editor favorito:
nano /var/www/example.com/html/index.html
En el interior, 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 haya terminado.
Para que Nginx sirva este contenido, es necesario crear un bloque de servidor con las directivas correctas. En lugar de modificar directamente el archivo de configuración predeterminado, hagamos uno nuevo en /etc/nginx/sites-available/ example.com
:
sudo nano /etc/nginx/sites-available/example.com
Pegue en el siguiente bloque de configuración, que es 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;
}
}
Tenga en cuenta que hemos actualizado la configuración root
a nuestro nuevo directorio y el server_name
a nuestro nombre de dominio.
A continuación, habilitemos el archivo creando un enlace desde él al directorio sites-enabled
, que Nginx lee durante el inicio:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Dos bloques de servidores ahora están habilitados y configurados para responder a solicitudes basadas en sus directivas listen
y server_name
(puede leer más sobre cómo Nginx procesa estas directivas aquí ):
example.com.
Responderá a las solicitudes deexample.com
ywww.example.com
.default.
Responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.
Para evitar un posible problema de memoria de cubo de hash que puede surgir al agregar nombres de servidor adicionales, es necesario ajustar un único valor en el archivo /etc/nginx/nginx.conf
. Abre el archivo:
sudo nano /etc/nginx/nginx.conf
Busque la directiva server_names_hash_bucket_size
y elimine el símbolo #
para descomentar la línea:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
A continuación, realice una prueba para asegurarse de que no haya errores de sintaxis en ninguno de sus archivos Nginx:
sudo nginx -t
Guarde y cierre el archivo cuando haya terminado.
Si no hay ningún problema, reinicie Nginx para habilitar sus cambios:
sudo systemctl restart nginx
Nginx ahora debería estar publicando su nombre de dominio. Puede probar esto navegando a http:// example.com
, donde debería ver algo como esto:
Paso 6. familiarizarse con archivos y directorios importantes de Nginx
Ahora que sabe cómo administrar el servicio Nginx en sí mismo, debería tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.
Contenido
/var/www/html.
El contenido web real, que por defecto solo consiste en la página Nginx predeterminada que vio anteriormente, se sirve desde el directorio/var/www/html
. Esto se puede cambiar alterando los archivos de configuración de Nginx.
Configuración del servidor
/etc/nginx.
El directorio de configuración de Nginx. Todos los archivos de configuración de Nginx residen aquí./etc/nginx/nginx.conf.
El archivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración global de Nginx./etc/nginx/sites-available/.
El directorio donde se pueden almacenar los bloques del servidor por sitio. Nginx no usará los archivos de configuración que se encuentran en este directorio a menos que estén vinculados al directoriosites-enabled
. Por lo general, toda la configuración del bloque de servidor se realiza en este directorio y luego se habilita mediante el enlace al otro directorio./etc/nginx/sites-enabled/.
El directorio donde se almacenan los bloques de servidor por sitio. Normalmente, estos se crean vinculando a los archivos de configuración que se encuentran en el directorio desites-available
./etc/nginx/snippets.
Este directorio contiene fragmentos de configuración que se pueden incluir en cualquier otro lugar de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles son buenos candidatos para la refactorización en fragmentos.
Registros del servidor
/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 lo contrario./var/log/nginx/error.log.
Cualquier error de Nginx se registrará en este registro.
Conclusión
Ahora que tiene instalado su servidor web, tiene muchas opciones para el tipo de contenido a servir y las tecnologías que desea usar para crear una experiencia más rica.
Si desea construir un paquete más completo, puedes consultar este artículo Cómo Configurar un Paquete LEMP en Ubuntu 16.04
Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04