Saltar navegación

Introducción al servidor web Nginx - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 14 de febrero de 2024 por Santiago G.

4 visualizaciones

Este es un vídeo de introducción al servidor weg Nginx.
Destinado a alumnos de 2º curso del CFGS Desarrollo de Aplicaciones Web.

Descargar la transcripción

Hola, en este caso voy a hacer una breve introducción a este otro servidor web, Nginx, que va a complementar lo que hemos visto con Apache, ¿vale? 00:00:00
Entonces, bueno, vamos allá. Lo tenéis aquí en la página donde os estoy dejando las cosas. 00:00:11
Bueno, pues la configuración de Nginx en general es de lo que vamos a ver más o menos similar a Apache. 00:00:19
Si aquí veis el aspecto que tiene, en vez de ser virtual host, pues es un bloque server y los bloques van con llaves. 00:00:26
Bueno, y este es el aspecto que tienen. 00:00:36
Los conceptos que vamos a ver son más o menos similares. 00:00:40
Sí que os he puesto aquí alguna diferencia entre Nginx y Apache. 00:00:42
Este artículo está bastante bien. 00:00:47
Hay cosas en las que Nginx funciona algo mejor y cosas en las que Apache es más práctico. 00:00:49
Por ejemplo, en Nginx no tenemos ficheros htaccess y estos ficheros son muy prácticos porque es parte de nuestro código. Si nosotros tenemos un repositorio o ficheros donde nosotros guardamos nuestro código, pues vamos a poder hacer cierta configuración y cierta gestión del servidor Apache con este fichero que está para ello. 00:00:56
Eso es algo que Nginx no tiene. Entonces, bueno, dificulta un poco la vida a los desarrolladores. Por otro lado, lo han quitado porque eso obliga a que cada consulta del cliente vuelva a recargar y a leer este feature. 00:01:17
Entonces, bueno, es un compromiso. Nginx tampoco soporta por defecto la ejecución de PHP. Hay que recurrir a otros mecanismos como FPM, que tiene su motor independiente. 00:01:33
Y mientras Apache tiene varios bloques como el de directorio, ficheros y location, Nginx únicamente soporta el bloque de location. 00:01:50
Y bueno, esto es un panorama general. En la práctica Apache es muy utilizado como el servidor backend, por ejemplo, de una aplicación concreta como WordPress o como otras aplicaciones, quizás especialmente en PHP, mientras que Nginx se suele utilizar más como reverse proxy, como proxy inverso que veremos en otro momento. 00:02:03
Así que, al menos ahora mismo, está bien conocer un poco de ambos. Pero ya os digo que los conceptos en muchos casos son similares. 00:02:32
Entonces, bueno, vamos a ver un caso práctico de configuración de Apache, ¿vale? Con algunas cosas sencillas. 00:02:44
Entonces voy a pasar a una terminal donde tengo AWS, ¿vale? Y acabo de instalar ya, ¿vale? He hecho aquí un update y he instalado ya Nginx, muy sencillo, ¿vale? 00:02:56
Y tenemos el servicio de Nginx activo y funcionando. ¿Dónde nos deja las cosas? Pues como casi todos los servicios, en etc, Nginx, y aquí podemos ver lo que tenemos inicialmente. 00:03:17
El fichero principal de configuración es solo uno, nginx.conf, así que voy a mirar lo que tiene. Con un cat voy arriba y aquí voy a saber que es más conciso realmente la configuración de Nginx. 00:03:39
Tenemos aquí directamente cuál es el usuario bajo el que se ejecuta el proceso de Nginx. Esto es importante porque este usuario es el que necesita acceso a nuestro código, el servidor web, sea el lenguaje que estemos utilizando o si son recursos estáticos como HTML, imágenes, etc. Este es el usuario que necesita acceso. 00:03:54
Hay otras distribuciones que utilizan el usuario Nginx, en este caso Ubuntu sigue el nombre habitual de Apache, así que simplemente miran nuestra distribución cuál es el que se usa. 00:04:17
Algunas conexiones, algunas configuraciones sobre los hilos o los procesos por los que vaya a trabajar, que lo llaman workers. 00:04:33
Y tenemos un único bloque HTTP que comienza y finaliza un poco más abajo. 00:04:45
Cuestiona sobre cómo se van a gestionar las conexiones TCP, sobre los tipos de features que vamos a utilizar. 00:04:50
Cuando instalemos algún certificado, esta es la configuración que se va a aplicar. 00:04:59
Ficheros de error y de acceso. 00:05:10
Si vamos a habilitar la compresión en la transferencia de cualquier tipo de fichero. 00:05:15
Por cierto, los ficheros de error y acceso los configuraremos para cada host virtual, pero por defecto están impuestos. 00:05:21
Y luego lo que nos interesa es qué directorios va a leer según está configurado Nginx en esta máquina, donde dejaremos nuestros hosts virtuales o servidores que se llaman en Nginx. 00:05:28
Entonces aquí tenemos realmente dos posibles directorios, conf.d donde se trabaja típicamente con Nginx en realidad, ahí va a leer cualquier fichero que tenga extensión .conf y también esto es algo que ha puesto Ubuntu, el mismo sistema que Apache con Sites Available y Sites Enabled y lee cualquier fichero, tenga la extensión que tenga dentro de este directorio de Sites Enabled. 00:05:44
Y esto sería, sencillamente, entonces vamos a ver qué es lo que tenemos aquí en SitesAvailable y SitesEnabled. 00:06:12
En los sitios disponibles tenemos un default. 00:06:24
Voy a poner aquí en este caso menos L, SitesEnabled. 00:06:28
Tenemos también ese otro default que es un enlace suave al sitio disponible. 00:06:32
Entonces vamos a ver qué es lo que nos viene por defecto. Un fichero que es cortito, pero simplemente tiene muchos comentarios. 00:06:39
Como veíamos, un bloque server. Estamos escuchando en el puerto 80. Por cierto, en Apache gestionábamos los puertos que abre en otro fichero que se llamaba ports. 00:06:51
aquí no existe tal fichero 00:07:02
si nosotros aquí indicamos simplemente 00:07:04
otro puerto, el 8080 00:07:06
Nginx ya lo va a abrir por defecto 00:07:08
no hace falta tocar nada más 00:07:11
y esta segunda línea es también 00:07:12
el puerto 80 pero en IPv6 00:07:14
esto sería el equivalente a decir 00:07:16
la dirección que tendríamos en IPv4 00:07:18
que es la 0.0.0.0 00:07:21
para que lea 00:07:23
de cualquier cliente 00:07:24
conexiones de cualquier cliente 00:07:26
en IPv6 es de todos ceros 00:07:28
se pone como dos puntos, dos puntos 00:07:30
entonces para separar eso 00:07:32
del separador del puerto 00:07:34
que es estos dos puntos, se utilizan 00:07:36
los corchetes planos, ¿vale? 00:07:38
simplemente, pues abre el puerto 80 00:07:40
en IPv6 también 00:07:42
¿vale? configuración SSL para 00:07:44
HTTPS, la vamos a 00:07:46
dejar de momento, tenemos 00:07:48
el document root, en este caso simplemente 00:07:50
poner el root y el directorio 00:07:52
nombres de dominio 00:07:54
lo pondríamos aquí 00:07:57
y luego pues directivas 00:07:57
location y ya estaría 00:08:00
aquí nos deja el caso también de una configuración 00:08:04
sin comentar y como más concreta, entonces yo tengo un par de 00:08:08
ficheros ya puestos y creados 00:08:12
los voy a mover, simplemente los tengo en 00:08:16
mi directorio de inicio, en el home, entonces voy a moverlos 00:08:19
al, perdón, etc, nginx, a los sitios disponibles. 00:08:23
Más que moverlos, los voy a copiar. 00:08:35
¿Vale? Y me voy a ir a esos, a los sitios habilitados. 00:08:40
¿Vale? Yo los tengo, los tengo como disponibles y los voy a habilitar. 00:08:46
En el caso de Apache teníamos un comando que hacía este enlace, con Nginx no lo tenemos. Seguro que luego hay herramientas para hacerlo, pero bueno, no cuesta nada y lo tenemos que hacer a mano. 00:08:52
Entonces, creamos un enlace suave. ¿Y a dónde lo ponemos? Pues a los sitios disponibles, lo he llamado nginxalpha.adaptns.rg porque ya tengo ese dominio creado, ¿vale? Y lo mismo con ese otro fichero beta. 00:09:04
y aquí tengo estos dos 00:09:22
picheros, vamos a ver que es lo que 00:09:28
que es lo que tiene 00:09:30
vale, en alfa he puesto la configuración 00:09:31
más sencilla que podemos 00:09:36
tener, tengo ya 00:09:38
puesto este 00:09:40
nombre de dominio y simplemente 00:09:41
el document root 00:09:44
voy a comprobar el nombre de dominio 00:09:45
aquí tenemos 00:09:47
esta sería la IP 00:09:52
sé que es esta que le acabo de poner 00:09:54
y bueno 00:09:58
aquí en alfa simplemente 00:10:00
he dejado un fichero 00:10:02
sencillo, ¿vale? Entonces 00:10:04
cosas que tenemos 00:10:08
que hacer, primero comprobar 00:10:11
si la nueva configuración que hemos dejado 00:10:12
es correcta, para eso 00:10:14
Hacemos un test y en este caso, lo he hecho a posta, me dice que hay un error en este otro fichero beta en la línea 34, ¿vale? 00:10:16
Entonces voy a arreglarlo, ¿vale? Más adelante veremos este fichero y en la línea 34 pues tendría que llegar a que aquí me falta un punto y coma. 00:10:30
Lo guardo, vuelvo a pasar el test y en este caso la sintaxis es correcta y el test ha pasado con éxito. Ahora ya sí que me atrevería a reiniciar en GeneXus. 00:10:44
¿Vale? Y si esto está funcionando, pues vamos a ver si las pruebas las consigo hacer de forma exitosa. 00:11:06
Entonces, vamos a ver si hago una consulta a este servidor. He escrito mal. Esto es DuckDNS. 00:11:18
¿Vale? Y a ver, quizás aquí hay alguna cuestión 00:11:37
Vale, ha tardado un poquito, será algo de AWS 00:11:43
Esto es lo que me ha devuelto, ¿vale? 00:11:46
El S-Index 00:11:49
Si quiero verlo un poco verbose para ver las cabeceras 00:11:51
Que al final esto es bastante importante 00:11:54
Veo las cabeceras que el cliente envía al servidor 00:11:58
Y las de respuesta 00:12:00
Lo que me importa es ver el código de estado 00:12:02
¿Vale? 200 00:12:05
Pues me ha devuelto aquí este index. Entonces esto en cuanto a un servidor, un virtual host, muy básico, ¿vale? Y vamos a ver ahora también este otro servidor que tengo que es un poquito más elaborado. 00:12:06
Pero vais a ver que también se entiende de forma muy similar a Apache. Entonces tengo este otro nombre de dominio, ¿vale? En este caso el root, el document root, está en este otro directorio, nginx beta, los ficheres de acceso y de error se escriben muy fácil, tal y como veis, access log y error log. 00:12:23
Las páginas de error, si las queremos personalizar, las de los diferentes códigos de estado, pues indicamos aquí cuál es la página que va a devolver. Y luego tenemos bloques con la directiva location. Ya os repito que en este caso Nginx no tiene directory ni files, trabaja únicamente con location. 00:12:51
Entonces, tenemos que pensar, es el mismo concepto con el que trabaja Apache, esto se refiere a la URL, ¿vale? No a los directorios ni a los ficheros, sino a lo que el cliente me pide. 00:13:10
esta directiva try files 00:13:23
es propia de Nginx 00:13:29
y básicamente lo que le podemos es indicar 00:13:32
qué cosas queremos que pruebe 00:13:35
en el document root que tengamos 00:13:37
va a mostrar la URI 00:13:42
la URI podéis traducirla a URL 00:13:44
la URI es una generalización de una URL 00:13:48
O sea, prueba si existe como fichero tal cual lo que me han pedido. Y si no, prueba lo que me han pedido con una barra. Solo intenta buscar como un directorio. De tal manera que si el cliente, aquí no tengo ningún ejemplo para mostrarlo, pero si el cliente me escribe algo y no acaba en barra y coincide con un directorio, pues primero busca eso como un fichero y después lo intenta buscar como un directorio. 00:13:52
Y sobre eso aplicaría el index.html o aunque lo podamos tener modificado. 00:14:19
Y si no existe, ni como fichero ni como directorio, pues entonces aquí le decimos que devuelva un mensaje de error. 00:14:26
Y todo esto lo podemos personalizar, ¿vale? 00:14:31
Esto lo tenéis explicado también aquí en esta web. 00:14:34
Es habitual tener esta configuración. 00:14:41
Pero bueno, podríamos personalizarla. 00:14:46
también vale y aquí tenemos el caso de un bloque location que está dentro del anterior 00:14:49
por cierto si pongo así location y una barra lo que significa es que me pidan cualquier 00:15:01
cosa que comience por barra vale no únicamente el directorio raíz por eso está aquí el 00:15:09
barra img está incluido dentro del anterior. En este caso, pues he utilizado esta directiva 00:15:15
try files para decir, si me has pedido una imagen que comienza por barra img barra, te 00:15:22
la devuelvo si existe y si esa imagen no existe, porque igual he metido la pata en el código 00:15:33
y estoy diciendo que los clientes intenten descargar una imagen que no existe o algo 00:15:39
así, si no existe el fichero que 00:15:45
el cliente me intenta solicitar 00:15:47
le devuelvo una imagen por 00:15:49
defecto, ¿vale? y si por algún motivo 00:15:51
me tomas la 00:15:53
pata aún y no existe esta imagen 00:15:55
por defecto, pues le devuelvo un error 00:15:57
404, ¿vale? y esto se aplicaría 00:15:59
solo a las rutas 00:16:01
que me pidan que comiencen por barra 00:16:03
img 00:16:05
y bueno, pues también tenemos aquí 00:16:05
un alias, si en algún momento he cambiado 00:16:09
el nombre del directorio de 00:16:11
images a img 00:16:13
Pues así lo podría probar, ¿vale? Bueno, un ejemplo de cómo denegar el acceso a un directorio. Voy a hacer la prueba con esto. Si estoy en este caso en beta barra dev, me debería volver un error 403 prohibido, ¿vale? 00:16:15
De acceso prohibido. Si, por ejemplo, quiero poner, como hacíamos en Apache, una página en mantenimiento, podría hacerlo así, con try files. Entonces, siempre que me pidan algo que esté dentro de un directorio o un location en realidad, que comienza por barra nueva web, devuelve esta página de mantenimiento antes de intentar devolver lo que te han pedido, ¿vale? 00:16:44
Yo aquí en este caso lo tengo en bar tres subes dobles, en Ginex beta, aquí tengo un directorio que se llama nueva web, ¿vale? Y aquí tengo un index.html, que será lo que en este caso no debería volver nunca, debería volver solo la página de mantenimiento. 00:17:13
Entonces, si yo solicito algo de web, barra, sin más, barra, me da un 200 OK, pero me devuelve los contenidos de ese mantenimiento.html. 00:17:33
Y por último, estoy aquí probando una expresión regular devolviendo una página con lo que sería una redirección tipo 301 para probar o para utilizar expresiones regulares como la interrogación, el asterisco, los paréntesis. 00:17:52
Es en realidad lo mismo que vimos en Apache, es en este caso simplemente aquí añado el carácter de virgulilla, esa tilde de la ñ, aquí para indicar que esto no es texto normal, sino que es una expresión regular. 00:18:20
Entonces, si coincide que comienza por barra MDN y la última barra la he puesto opcional, ¿vale? Puede estar o puede no estar. Entonces, pues devuelve una redirección a esta página web, ¿vale? A la Mozilla Developer Network. 00:18:35
network de ahí viene mdn entonces voy a probar si esto funciona mdn debería devolverme 301 vale 00:18:53
con ese location que es a donde me redirigiría automáticamente un cliente web de escritorio y 00:19:07
Y si pongo también mdn finalizado en barra, pues debería funcionar igual. 00:19:17
Así que bueno, esto es un poco la introducción así breve que quería comentar. 00:19:25
Y el resto pues ya es revisar aquí o en la página de documentación oficial de Nginx, que también es bastante concreta. 00:19:31
ejemplos y situaciones 00:19:45
que pueden aparecer 00:19:48
así que nada 00:19:50
hasta aquí lo dejo por el momento 00:19:52
venga 00:19:54
Idioma/s:
es
Idioma/s subtítulos:
es
Autor/es:
Santiago González Gancedo
Subido por:
Santiago G.
Licencia:
Reconocimiento - No comercial - Sin obra derivada
Visualizaciones:
4
Fecha:
14 de febrero de 2024 - 16:16
Visibilidad:
Clave
Centro:
IES ENRIQUE TIERNO GALVAN
Duración:
19′ 56″
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
71.20 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid