NGINX
Documentación
Práctica Inicial: Instalación de NGINX en una instancia EC2
- Acceder a Lab y a la consola
- EC2
- Crear instancia
par claves
- ver instancias
- clic en id de instancia
- conectar -> conectar
public IP
sudo dnf update
sudo dnf install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
Comprobamos si se puede acceder a esa ip desde el navegador
No tiene abierto el puerto http (80)
Seguridad > grupos de seguridad > editar reglas de entrada
agregar regla > tcp > HTTP > anywhere
Vuelve a comprobar si puedes acceder a esa ip desde el navegador
test: cambio datos de mi index.html
Dónde está el
index.html
?$ cat /etc/nginx/nginx.conf
Práctica 1: Subir la web que hemos hecho con Hugo
- Genera la web con Hugo
$ hugo --minify
- Conecta con tu learner lab y descárgate la clave del lab
labsuser.pem
. En las instrucciones del lab tienes la explicación detallada para cada sistema operativo. - Comprime la carpeta
public
de tu web - Sube el fichero comprimido a tu servidor EC2
$ scp -i labuser.pem <fichero_comprimido> ec2-user@<ip_de_tu_ec2>:/home/ec2-user
- Descomprímelo en la carpeta
/usr/share/nginx/html
$ sudo unzip <fichero_comprimido> -d /usr/share/nginx/html
- Comprueba si puedes acceder a tu web desde el navegador
Práctica 2: Crear un virtual host
Objetivo: queremos servir otra web distinta en la misma instancia EC2
En nginx se llaman
server blocks
Pasos:
1. Estructura de Directorios
Por convención, se suele colocar el contenido de cada sitio web en su propio directorio dentro de /var/www/
o /usr/share/nginx
. Por ejemplo:
/usr/share/nginx/site1.com
/usr/share/nginx/site2.com
o
/var/www/site1.com/public_html
/var/www/site2.com/public_html
2. Crear los directorios y añadir contenido de prueba:
sudo mkdir -p /usr/share/nginx/site1.com
sudo mkdir -p /usr/share/nginx/site2.com
echo "Bienvenido a site1.com" | sudo tee /var/www/site1.com/public_html/index.html
echo "Bienvenido a site2.com" | sudo tee /var/www/site2.com/public_html/index.html
3. Configurar los Server Blocks
Por convención, cada server block (o virtual host) se define en su propio archivo dentro de /etc/nginx/sites-available/
y luego se crea un enlace simbólico hacia /etc/nginx/sites-enabled/
.
Crearemos dos archivos de configuración:
sudo nano /etc/nginx/sites-available/site1.com
Y añade lo siguiente (ajustando donde sea necesario):
server {
listen 80;
server_name site1.com www.site1.com;
root /usr/share/nginx/site1.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Guarda y cierra el archivo, luego crea el segundo server block:
sudo nano /etc/nginx/sites-available/site2.com
Y añade:
server {
listen 80;
server_name site2.com www.site2.com;
root /usr/share/nginx/site2.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
4. Activar los Server Blocks
Para activar estos server blocks, crea un enlace simbólico de estos archivos hacia sites-enabled
:
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
5. Verificar la Configuración de Nginx
Es recomendable verificar la configuración de Nginx para asegurarte de que no hay errores sintácticos:
sudo nginx -t
Si todo está bien, deberías ver algo como:
nginx: configuration file /etc/nginx/nginx.conf test is successful
6. Reiniciar Nginx
Por último, reinicia Nginx para que los cambios surtan efecto:
sudo systemctl restart nginx
7. Crea las entradas en tu archivo hosts
local
En linux:
/etc/hosts
En Windows:C:\Windows\System32\drivers\etc\hosts
con las siguientes líneas:
<ip_pública_de_tu_ec2> site1.com
<ip_pública_de_tu_ec2> site2.com
8. Comprueba si puedes acceder a tus webs desde el navegador
O desde la consola con curl
:
$ curl site1.com
$ curl site2.com
Comprueba también los registros de log del servidor:
$ sudo tail -f /var/log/nginx/access.log
$ sudo tail -f /var/log/nginx/error.log