NGINX

NGINX

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

Práctica 3: Crear un virtual host con un certificado SSL

En construcción

Última modificación September 30, 2023: website s3 (9c3f86f)