User Tools

Site Tools


apuntes:servidores_web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
apuntes:servidores_web [2017/11/02 10:50] – [Monitorización] Santiago Faciapuntes:servidores_web [2018/04/10 14:30] – [Personalizar las páginas de error] Santiago Faci
Line 5: Line 5:
 Existen un par de servidores web ([[http://httpd.apache.org|Apache]] y [[https://www.iis.net|Microsoft IIS]]) de uso general y muy extendido que se reparten casi la totalidad del mercado. Por otra parte está [[https://nginx.org/en/|nginx]], relativamente reciente, y que ha cogido bastante popularidad en poco tiempo. También aparece alguna solución de Google debido a la popularidad de sus servicios. A partir de ahí, el resto de soluciones, quizás por ser más específicas para productos o tecnologías más concretas y menos extendidas, apenas significan nada en el reparto total. Quizás, junto con el resto de servidores, tambíén puede destacar [[https://www.lighttpd.net|lighttpd]], puesto que actualmente se está hablando bastante de él por su bajo consumo de memoria. Existen un par de servidores web ([[http://httpd.apache.org|Apache]] y [[https://www.iis.net|Microsoft IIS]]) de uso general y muy extendido que se reparten casi la totalidad del mercado. Por otra parte está [[https://nginx.org/en/|nginx]], relativamente reciente, y que ha cogido bastante popularidad en poco tiempo. También aparece alguna solución de Google debido a la popularidad de sus servicios. A partir de ahí, el resto de soluciones, quizás por ser más específicas para productos o tecnologías más concretas y menos extendidas, apenas significan nada en el reparto total. Quizás, junto con el resto de servidores, tambíén puede destacar [[https://www.lighttpd.net|lighttpd]], puesto que actualmente se está hablando bastante de él por su bajo consumo de memoria.
  
-En este capítulo nos centraremos exclusivamente en el servidor web //Apache// (no confundir con el [[http://www.apache.org|Proyecto Apache]] por ser el más utilizado actualmente (e históricamente) con bastnte diferencia con respecto a los demás. Más adelante, centraremos algunas de las prácticas en la instalación y configuración de otros servidores web que hemos comentado anteriormente.+En este capítulo nos centraremos exclusivamente en el servidor web //Apache// (no confundir con el [[http://www.apache.org|Proyecto Apache]] por ser el más utilizado actualmente (e históricamente) con bastante diferencia con respecto a los demás. Más adelante, centraremos algunas de las prácticas en la instalación y configuración de otros servidores web que hemos comentado anteriormente.
  
 [[http://www.netcraft.com|Netcraft]] es una compañia de servicios en Internet que lleva más de 20 años realizando un ranking del uso de los diferentes servidores web en Internet((https://news.netcraft.com/archives/2017/02/27/february-2017-web-server-survey.html)) [[http://www.netcraft.com|Netcraft]] es una compañia de servicios en Internet que lleva más de 20 años realizando un ranking del uso de los diferentes servidores web en Internet((https://news.netcraft.com/archives/2017/02/27/february-2017-web-server-survey.html))
Line 313: Line 313:
     ServerName misitio.com     ServerName misitio.com
     ServerAlias www.misitio.com     ServerAlias www.misitio.com
-    ErrorLog "misitio.com-error_log+    ErrorLog "misitio.com-error.log
-    CustomLog "misitio.com-access_log" combined+    CustomLog "misitio.com-access.log" combined
 </VirtualHost> </VirtualHost>
 </file> </file>
Line 623: Line 623:
     ServerName misitio.com     ServerName misitio.com
     ServerAlias www.misitio.com     ServerAlias www.misitio.com
-    ErrorLog "misitio.com-error_log+    ErrorLog "misitio.com-error.log
-    CustomLog "misitio.com-access_log" combined+    CustomLog "misitio.com-access.log" combined
 </VirtualHost> </VirtualHost>
 </code> </code>
Line 636: Line 636:
     ServerName misitio.com     ServerName misitio.com
     ServerAlias www.misitio.com     ServerAlias www.misitio.com
-    ErrorLog "logs/misitio.com-error_log+    ErrorLog "logs/misitio.com-error.log
-    CustomLog "logs/misitio.com-access_log" combined+    CustomLog "logs/misitio.com-access.log" combined
          
     <Directory "/var/www/html/misitio.com/usuarios">     <Directory "/var/www/html/misitio.com/usuarios">
Line 719: Line 719:
     ServerName misitio.com     ServerName misitio.com
     ServerAlias www.misitio.com     ServerAlias www.misitio.com
-    ErrorLog ${APACHE_LOG_DIR}/misitio.com-error_log +    ErrorLog ${APACHE_LOG_DIR}/misitio.com-error.log 
-    CustomLog ${APACHE_LOG_DIR}/misitio.com-access_log combined+    CustomLog ${APACHE_LOG_DIR}/misitio.com-access.log combined
  
     BandwidthModule On     BandwidthModule On
Line 775: Line 775:
     ServerAlias www.misitio.com     ServerAlias www.misitio.com
          
-    ErrorLog "misitio.com-error_log+    ErrorLog "misitio.com-error.log
-    CustomLog "misitio.com-access_log" combined+    CustomLog "misitio.com-access.log" combined
          
     ErrorDocument 404 /error_404.html     ErrorDocument 404 /error_404.html
Line 904: Line 904:
 {{ httpsmisitiocom.png }} {{ httpsmisitiocom.png }}
 <caption>Conexión segura utilizando HTTPS</caption></figure> <caption>Conexión segura utilizando HTTPS</caption></figure>
 +
 +Llegados a este punto nos puede interesar que todo el tráfico de la web se vea forzado a utilizar el protocolo seguro HTTPS. Incluso aunque el usuario introduzca la URL directamente y decide navegar utilizando HTTP (''http://.....'') nosotros podemos redirigirle hacia la opción de utilizar la opción segura.
 +
 +En ese caso podemos incluso configurar el host virtual no seguro con las opciones mínimas para redirigirlo al seguro. No haría falta ni incluir la opción ''DocumentRoot''.
 +
 +<code apache>
 +<VirtualHost *:80>
 +   ServerName www.misitio.com
 +   Redirect / https://www.misitio.com/
 +</VirtualHost>
 +
 +<VirtualHost *:443>
 +  ServerName misitio.com
 +  DocumentRoot . . .
 +  . . .
 +</VirtualHost>
 +</code>
 +
 +Finalmente podemos optar por una redirección permanente (de esta forma así se notificará a los buscadores) modificando la orden ''Redirect'' por la siguiente:
 +
 +<code apache>
 +  . . .
 +  Redirect permanent / https://www.misitio.com/
 +  . . .
 +</code>
  
 === Protección frente a atacantes === === Protección frente a atacantes ===
Line 919: Line 944:
  
 Ver [[apuntes:jmeter|Anexo JMeter]] Ver [[apuntes:jmeter|Anexo JMeter]]
 +
 +===== Estadísticas web =====
 +
 +{{ webalizer.png }}
 +
 +Webalizer es una aplicación que podemos instalar para procesar el fichero ''log'' de Apache y generar un documento HTML con las estadísticas de nuestro sitio web.
 +
 +Podemos instalarlo utilizando la herramienta ''apt''.
 +
 +<code bash>
 +santi@zenbook:$ sudo apt-get install webalizer
 +</code>
 +
 +Y a continuar utilizar el comando ''webalizer'' para procesar el fichero ''log'' que queramos (en este caso el del sitio raíz) y éste generará una carpeta en ''/var/www/webalizer'' con un sitio web donde podremos visitar diferentes estadísticas sobre el uso del servidor.
 +
 +<code bash>
 +santi@zenbook:$ sudo webalizer /var/log/apache2/access.log
 +</code>
 +
 +Puesto que ahora por defecto en Debian la carpeta raíz para //Apache// es ''/var/www/html'', tendremos que hacer un enlace simbólico dentro de dicha carpeta que apunte a la que //Webalizer// genera para poder visualizar el informe. También podría ser interesante proteger esa carpeta de alguna manera para que no fuera visible para cualquier visitante.
 +
 +<code bash>
 +santi@zenbook:/var/www/html/$ sudo ln -s ../webalizer webalizer
 +</code>
 +
 +Ahora podemos visitar la página web generada donde podremos observar las estadísticas ya preparadas para nuestro sitio web (en este caso en ''http://192.168.1.6/webalizer'', donde la IP será la de la máquina donde tenemos desplegado el sitio, o bien el dominio si lo tenemos)
 +
 +<figure>
 +{{ webalizer1.png }}
 +<caption>Estadísticas web con webalizer</caption></figure>
 +
 +<figure>
 +{{ webalizer2.png }}
 +<caption>Estadísticas web con webalizer</caption></figure>
 +
 ===== Monitorización ===== ===== Monitorización =====
 +
 +{{ goaccess.png }}
  
 [[http://goaccess.io|GoAccess]] es una analizador visual de logs de Apache en tiempo real. De esa manera permite monitorizar el acceso y uso al servidor por parte de los usuarios en cada momento con numerosas métricas. [[http://goaccess.io|GoAccess]] es una analizador visual de logs de Apache en tiempo real. De esa manera permite monitorizar el acceso y uso al servidor por parte de los usuarios en cada momento con numerosas métricas.
Line 957: Line 1019:
 {{ goaccess1.png }} {{ goaccess1.png }}
 <caption>Monitorización de Apache en HTML en tiempo real</caption></figure> <caption>Monitorización de Apache en HTML en tiempo real</caption></figure>
-===== Estadísticas web ===== 
  
-=== Webalizer === 
- 
-<code bash> 
-santi@zenbook:$ sudo apt-get install webalizer 
-</code> 
- 
-<code bash> 
-santi@zenbook:$ sudo webalizer /var/log/apache2/access.log 
-</code> 
- 
-<code bash> 
-santi@zenbook:/var/www/html/$ sudo ln -s ../webalizer webalizer 
-</code> 
- 
-Ahora podemos visitar la página web generada donde podremos observar las estadísticas ya preparadas para nuestro sitio web (en este caso en ''http://192.168.1.6/webalizer'', donde la IP será la de la máquina donde tenemos desplegado el sitio, o bien el dominio si lo tenemos) 
- 
-<figure> 
-{{ webalizer1.png }} 
-<caption>Estadísticas web con webalizer</caption></figure> 
- 
-<figure> 
-{{ webalizer2.png }} 
-<caption>Estadísticas web con webalizer</caption></figure> 
 ===== Utilizar contenedores con Docker ===== ===== Utilizar contenedores con Docker =====
  
Line 1001: Line 1039:
  
 ===== Ejercicios ===== ===== Ejercicios =====
 +
 +  - Configura un servidor Apache según los siguientes requisitos:
 +    * Se necesitan crear 3 sitios web: //agencia.com//, //miblog.com// y //misnoticias.com//
 +    * Los 3 sitios web además tienen además el mismo dominio en .es y quieren que apunte al mismo sitio web
 +    * La idea es que los ''logs'' del servidor web se separen por cada sitio web puesto que así será más fácil revisarlos más adelante en caso de que sea necesario
 +    * El sitio web //agencia.com// tiene página de error personalizada para el caso de //error 404//
 +  - El sitio web //miblog.com// necesita ahora una carpeta con autenticación HTTP. La carpeta se llama ''zonaprivada''. Además, necesita que no se pueda listar el contenido de la carpeta ''img'' desde el navegador
 +  - El sitio web //agencia.com// necesita ahora utilizar conexión segura HTTPS puesto que pondrá en marcha una zona privada para los usuarios. Ya de paso quiere que todo el tráfico utilice ese protocolo por lo que quiere forzar siempre el uso de HTTPS para todo el sitio web
 +  - Pon en marcha el sistema de monitorización //GoAccess// para el sitio //misnoticias.com//
 +  - Configura un contenedor Docker que te permita probar el sitio web de //miblog.com// sin necesidad de montar una máquina virtual o probarlo en tu propio equipo
 +  - Realiza una prueba de rendimiento para ver como se comportará el sitio //agencia.com// cuando haya mil usuarios simultáneamente
 +  - Despliega un contenedor Docker que te permita comprobar si una web estática (sólo HTML/CSS) funciona correctamente en Ubuntu con Apache
 +  - Despliega un contenedor Docker que te permita comprobar si la web del punto anterior funcionará bien con CentOS
 +  - Despliega un contenedor Docker que permita probar alguno de los sitios web dinámicos (PHP/MySQL) realizados en la asignatura de //Desarrollo Web en Entorno Servidor//
  
 ---- ----
apuntes/servidores_web.txt · Last modified: 2019/01/04 13:02 by 127.0.0.1