En esta guía, exploraremos cómo usar nginx en Ubuntu 20.04, es decir, instalar nginx y configurar nginx para servir un sitio virtual.
Instalación de Nginx
actualizar nuestro índice de paquetes locales para que tengamos acceso a las listas de paquetes más recientes
sudo apt update
Instalar nginx
sudo apt install nginx
Actualizar cortafuegos
Lista de aplicaciones ufw disponibles:
sudo ufw app list
Salida de muestra:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Los perfiles de Nginx enumerados:
Nginx Full
– Ambos http – 80 y https – 443Nginx HTTP
– solo tráfico http 80Nginx HTTPS
– Solo tráfico https 443 – TLS/SSL tráfico encriptado
Habilite el perfil que desee, tanto http como https en nuestro caso:
sudo ufw allow 'Nginx Full'
Verificar el cambio
sudo ufw status
El comando anterior mostrará qué tráfico está permitido.
Configuración de nginx
Comprobar la versión instalada
sudo apt list --installed | grep nginx
Comprobar el servicio systemd
sudo systemctl status nginx
Debería ver este resultado que muestra que nginx se está ejecutando
● 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 2021-07-30 14:07:33 UTC; 2min 42s ago
Docs: man:nginx(8)
Main PID: 4684 (nginx)
Tasks: 5 (limit: 9257)
CGroup: /system.slice/nginx.service
├─4684 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─4685 nginx: worker process
├─4686 nginx: worker process
├─4687 nginx: worker process
└─4688 nginx: worker process
Jul 30 14:07:33 frhb64566ds systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 30 14:07:33 frhb64566ds systemd[1]: Started A high performance web server and a reverse proxy server.
Para asegurarse de que el servicio nginx siempre se esté ejecutando incluso después de reiniciar, use este comando systemnd para habilitar:
sudo systemctl enable nginx
Puede usar estos otros comandos systemd para administrar nginx:
# To start the service
sudo systemctl start nginx
# To restart the service
sudo systemctl restart nginx
# To reload the service config
sudo systemctl reload nginx
# To stop the service config
sudo systemctl restart nginx
# To disable the service config
sudo systemctl restart nginx
Para confirmar que nginx realmente se está ejecutando y es accesible, use este comando:
curl http://server_ip/
donde server_ip
es la ip de tu servidor. Si por alguna razón no conoce la ip pública de su servidor, use esto para verificar:
curl -4 icanhazip.com
Entonces:
curl http://178.170.10.54/
Debería obtener la página nginx predeterminada.
Servir nginx de página estática simple
Echemos un vistazo a un ejemplo para servir una página estática con nginx. La página estática es html y css que no necesita ninguna representación del lado del servidor. Vamos a utilizar el dominio de ejemplo your.domain.com
en nuestro caso.
Pasos:
-
Cree el directorio para almacenar nuestro contenido estático (usaremos
/var/www/your.domain.com
)sudo mkdir -p /var/www/your.domain.com
-
Asegúrese de que el usuario actual pueda acceder al directorio creado
sudo chown -R ${USER}:${USER} /var/www/your.domain.com sudo chmod -R 755 /var/www/your.domain.com
-
Agregue un archivo de muestra al directorio (
/var/www/your.domain.com/index.html
)cat > /var/www/your.domain.com/index.html <<EOF <html> <head> <title>Hola from your.domain.com!</title> </head> <body> <h1>Hey!</h1> <p>Our site <i>your.domain.com</i> is working as expected.</p> </body> </html> EOF
-
Cree la configuración de nginx en el directorio
/etc/nginx/conf.d
donde nginx busca configuraciones para incluir al servir. Crearemos el archivo/etc/nginx/conf.d/your.domain.com.conf
con el contenido requerido.
Usa este comando:
cat > /etc/nginx/conf.d/your.domain.com.conf <<EOF
server {
listen 80;
server_name your.domain.com;
root /var/www/your.domain.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
EOF
-
Pruebe para asegurarse de que no haya errores de sintaxis en ninguno de los archivos nginx
sudo nginx -t
-
Si no hay errores, reinicie nginx para recargar la configuración
sudo systemctl restart nginx
-
Para asegurarse de que su dominio pueda llegar al servidor, edite su configuración de DNS para asegurarse de que los registros A del sitio
your.domain.com
está apuntando a la IP del servidor.
Su sitio ahora debería estar en funcionamiento. Confirme visitando http://su.dominio.com
Archivos y directorios importantes de Nginx en Nginx
-
/var/www/html
:Este es el directorio de contenido web. Contiene el contenido de la página predeterminada en el archivoindex.nginx-debian.html
. Esa página se representa cuando no se define un host de servidor específico. -
/etc/nginx
:contiene todos los archivos de configuración de nginx. -
/etc/nginx/nginx.conf
:Este es el principal archivo de 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 asites-enabled
directorio. Por lo general, toda la configuración del bloque del servidor se realiza en este directorio y luego se habilita vinculando al otro directorio. -
/etc/nginx/sites-enabled/
:el directorio donde se almacenan los bloques de servidor habilitados por sitio. Por lo general, estos se crean vinculando los archivos de configuración que se encuentran en el directorio de sitios disponibles. -
/etc/nginx/snippets
:este directorio contiene fragmentos de configuración que se pueden incluir en otro lugar de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles son buenos candidatos para la refactorización en 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 lo contrario. -
/var/log/nginx/error.log
:Cualquier error de Nginx se registrará en este registro.