Índice - wordpress.com · 2015-03-17 · –wide: a lo ancho, de alcance. –web: tela de araña....
TRANSCRIPT
1
Servicio Web
Redes Avanzadas y Servicios
A. Mozo/ A. Lorenzo
1 Servicio Web 12-13
Índice
Introducción e historia del Servicio Web
Elementos del servicio
Protocolo HTTP
Arquitectura del servicio Web
Configuración servidor Web
Servicio Web 12-13 2
2
3
• World Wide Web
– World: El mundo, el planeta.
– Wide: A lo ancho, de alcance.
– Web: Tela de araña. Red en el sentido de malla
Red mallada de alcance mundial : Internet
• El servicio ha adoptado, por extensión, el nombre de
la red que lo soporta: Web .
Introducción al WWW
Servicio de intercambio de documentos
hipertexto e hipermedia en Internet.
Servicio Web 12-13
4
Hipertexto e hipermedia
Servicio Web 12-13
• Referencias establecidas mediante anclas y enlaces.
3
ww
w.d
om
1.e
s
www.domx.com
abcde
BIENVENIDO
www.dom.au
www.domy.it
www.doming.uk
hello you
5
Hipertexto e hipermedia en redes
Servicio Web 12-13
Servicio Web 12-13 6
Orígenes del Word Wide Web
• Memex de Vannevar Bush en 1945
• Ted Nelson: Concepto de hipertexto e
hipermedia en 1965
• Lenguaje HTML: Tim Berners-Lee del CERN
(Suiza) en 1986.
• Berners-Lee y Cailliau en 1990 primer servidor
web “httpd” en el CERN
• W3C: desarrollo de estándares
4
Objetivos iniciales del Servicio
• Desaparición del concepto de servidor único
• Mecanismo para localizar documentos
distribuidos
• Interfaz de usuario que facilite el acceso a la
información
• Información como páginas web en HTML
Servicio Web 12-13 7
Elementos del Servicio Web
• Servidores: Almacenan y sirven recursos web
• Clientes: Interfaz de usuario. Navegadores.
• HTML (Hypertext Markup Language): representación
de documentos
• URI (Uniforme Resource Identifier): permite enlazar
documentos.
• HTTP (Hyper Text Transfer Protocol): Comunicación
entre Cliente y Servidor 8
Servicio Web 12-13
5
Recursos web (1)
• Un servidor web ‘almacena’ recursos web
html
gif
.php
Servicio Web 12-13 9
• Texto, imagen, ejecución de una aplicación
en el servidor, etc
Recursos web (2)
• MIME (Multipurpose Internet Mail Extensions)
– text/html, text/plain
– image/jpeg, image/gif
– Application/vnd.ms-powerpoint
Content-type: image/jpeg
Content-length: 1387
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
Mime type
10 Servicio Web 12-13
• El cliente (navegador/browser) mira si puede
manipular el objeto (el mismo o mediante plug-in)
6
Páginas web
• Documento HTML
– Hoja de estilo CSS
– Imágenes
– Objetos multimedia
– scripts
11 Servicio Web 12-13
Servidor 1
Servidor 2
• Pueden estar en diferentes servidores
URI, URL, URN
• URI: Uniform Resource Identifier (RFC 2396)
– Es una cadena de caracteres que identifica un recurso físico o abstracto
– URI agrupa URL (absolutos, relativos) y URN
– Es un localizador, un nombre de recurso o ambas cosas
12 Servicio Web 12-13
• URL: Uniform Resource Locator (RFC 1738 )
– Es un localizador de recursos
– http://www.eui.upm.es/Escuela/Planificacion/calendario0910.pdf
• URN: Uniform Resource Name – Es un nombre de un recurso ”urn:” <NID> ”:” <NSS>
– Ejemplos:
– urn:ietf:rfc:2141
– urn:isbn13:978-84-233-3928-0
– urn:isan:0000-0000-9E59-0000-O-0000-0000-2
– No indica la localización del recurso
– Experimental
7
13
• Los hiperenlaces tienen dos partes:
– El “anchor”, texto o gráfico en el que se pincha.
– El URL, describe que hacer cuando se activa el
hiperenlace.
• El URL permite localizar y acceder a los
recursos mediante la indicación de: – El protocolo a utilizar
– El nombre de dominio o dirección IP del servidor
– Ubicación dentro del servidor
– Campos opcionales
Universal Resource Locator
Servicio Web 12-13
Formato URL
• Formato
<scheme>://<user>:<pwd>@<host>:<port>/<path>;<query>? parametro=valor>
14 Servicio Web 12-13
scheme : protocolo empleado (http, https, ftp, file, etc)
user:pwd : autentificación usuario
host:port, si es el puerto por defecto puede omitirse
path: ruta para llegar al documento
query: para realizar búsquedas
8
Ejemplos URLs
• Host y puertos http://www.eui.upm.es:80/index.html
http://198.158.228.145:8080/index.html
15 Servicio Web 12-13
• Usernames y contraseñas ftp://anonymous:[email protected]/pub/gnu
http://alberto:[email protected]/ingresos.txt
• Paths http://www.terra.com:80/cuatrimestre/index-q3.html
• Query Strings
http://www.terra.com/inventory-check.cgi?item=12731
http://redes.eui.upm.es/redes/course/view.php?id=17
http://redes.eui.upm.es/redes/calendar/view.php?view=month&course=17
&cal_d=1&cal_m=05&cal_y=2013
http://www.eui.upm.es/event/2013/05/12/month
Servicio Web 12-13 16
• Absoluta: se da toda la información
http://www.ejemplo.com/ruta1/ruta2/pagina1.html
• Relativa: se da información parcial referenciada a otra
URL origen
URL relativa1 : pagina2.html
URL relativa2: ../pagina2.html
URL relativa 3: ruta3/pagina2.html
URL relativa4: /ruta5/pagina2.html
Tipos de URL
• Posibilidad de redireccionar
9
Servicio Web 12-13 17
HTTP (Hyper Text Transfer Protocol)
• Protocolo de aplicación TCP/IP para comunicar
clientes con servidores web
• Conexión “directa” entre origen y destino que
se apoya en TCP transferencia sin errores
y en secuencia.
• Protocolo sin estado basado en operaciones
de solicitud/respuesta
Versiones de HTTP
• HTTP/1.0 – Primera versión de gran despliegue en lo que hoy se
conoce como World Wide Web
– RFC 1945 (1996)
18 Servicio Web 12-13
• HTTP/1.1 – Mejoró el rendimiento e incluyó soporte para nuevas
aplicaciones web
– Es la que usan los servidores web actuales
– RFC 2616 (199)
10
Servicio Web 12-13 19
HTTP 1.0 versus HTTP 1.1
hello you
Página con tres elementos de información alojados
en el mismo servidor
index.html
circulo.gif
berners.jpg
Servicio Web 12-13 20
HTTP 1.0: conexiones no persistentes SYN = 1
SYN = 1 ACK=1
ACK = 1
Datos (GET /index.html)
Datos (index.html)
FIN = 1
FIN=1 ACK = 1
ACK = 1
SYN = 1
Datos (GET /bernes.jpg)
Datos (berners.jpg)
SYN = 1 ACK=1
ACK = 1
FIN = 1
FIN =1 ACK = 1
ACK = 1
SYN = 1
SYN = 1 ACK=1
ACK = 1
FIN = 1
FIN = 1 ACK = 1
ACK = 1
Datos (GET /circulo.gif)
Datos (circulo.gif)
11
Servicio Web 12-13 21
HTTP 1.1: conexiones persistentes
SYN = 1
SYN = 1 ACK=1
ACK = 1
Datos (GET /index.html)
Datos (index.html)
FIN = 1
ACK = 1
ACK = 1
Datos (GET /circulo.gif)
Datos (circulo.gif)
Datos (GET /berners.jpg)
Datos (berners.jpg)
22
• Conexiones persistentes
• Liberación por “keepalive”
• Soporte para aplicaciones web más complejas
• Nuevos métodos de solicitud
• Nuevas cabeceras
Ventajas de HTTP 1.1
Servicio Web 12-13
12
23
Método URL Versión
Cuerpo (opcional)
Cabeceras (0-N)
Nombre: valor
Solicitudes
Versión Código-estado Explicación
Cuerpo (opcional)
Cabeceras (0-N)
Nombre: valor
Respuestas
Mensajes HTTP (1)
Servicio Web 12-13
Mensajes HTTP (2)
• Solicitud
24 Servicio Web 12-13
GET /prueba.html HTTP/1.1
Connection: close
User-Agent: Mozilla/5.0 [en] (X11; I; Linux 2.2.15 i586; Nav ...)
Host: www.uv.es <CRLF>
Accept: image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, */*
Accept-Encoding: gzip
Accept-Language: es
Accept-Charset: iso-8859-1
<CRLF>
Start-line
Cabeceras
• Respuesta
HTTP/1.1 200 OK
Date: Tue, 24 Jan 2011 12:40:26 GMT
Server: Apache/1.3.9 (Unix) Debian/GNU
Last-Modified: Tue, 23 Jan 2011 12:39:45 GMT
ETag: "19e89f-22-3a6d7b91"
Content-Length: 34
Content-Type: text/html; charset=iso-8859-1
<CRLF>
<html>Esto es una prueba</html>
Start-line
Cabeceras
Cuerpo
13
Métodos HTTP
Method Description Message
body
GET Obtiene un documento del servidor. También
puede enviar datos al servidor para procesar
(query string y formularios HTML)
No
HEAD Obtiene solo las cabeceras del documento No
POST Envía datos (formularios HTML) al servidor
para que sean procesados
Si
PUT Sube el cuerpo del recurso al servidor SI
DELETE Borra el recurso del servidor No
TRACE Loopback de la peticion. Diagnostico de
interferencia de proxys
No
OPTIONS Devuelve los métodos que acepta el servidor No
25 Servicio Web 12-13
Códigos de retorno
Rango Rango definido Categoría
100-199 100-101 101 Switching protocol (server)
Información
200-299 200-206 200 OK; 201 Created
Éxito
300-399 300-307 301 movido a otro sitio (Location)
304 Not Modified
Redirección
400-499 400-417 401 Unauthorized: fallo autenticacion
404 Not Found
Error cliente
500-599 500-505 500 Internal Server Error
Error Servidor
26 Servicio Web 12-13
14
Servicio Web 12-13 27
Cabeceras HTTP
Información adicional que proporciona flexibilidad al
protocolo
Generales: se aplican la sesión completa
Date , Connection
Solicitud: utilizadas por el cliente
– Preferencias: Accept-xxx
– Peticiones condicionales: If-xxx
– Información: Host, User-Agent, Content
Servicio Web 12-13 28
Cabeceras HTTP (continuación)
Respuesta: utilizadas por el servidor
– Redirección: Location
– Seguridad: www-authenticate
– Información: Server, Content
Entidad: relacionadas con el recurso
– Contenido: Content-xxx
– Tiempo: Last-Modified, Expires
15
Método GET
Request message
Response message
www.eui.upm.es
29 Servicio Web 12-13
GET /index.html HTTP/1.1
User-agent: Mozilla/4.75 [en] (Win98; U) Host: www.eui.upm.es Accept: text/html, image/gif, image/jpeg Accept-language: en
HTTP/1.1 200 OK
Date: Mon, 13 Dec 2010 12:01:13 GMT Server: apache/1.5.23 (Unix) Last-modified: Mon, 01 Jun 2010 08:00:00 GMT Content-type: text/html Content-length: 43567
<html> <body>Hola amigos <p> Adios amigos </body></html>
Servicio Web 12-13 30
Método GET (continuación)
• Para reducir el tráfico:
– GET condicional
– GET parcial:
• Range:bytes=0-100
• Permite enviar pocos datos en forma de
pares atributo=valor
GET /cgi-bin/prueba?nombre=pedro+tarsis&editorial=mislibros HTTP/1.1
User-agent: Mozilla/4.75 [en] (Win98; U) Host: www.ejemplo.es Accept: text/html, text/plain, image/* Accept-language: en
16
Redirecciones 301-302
• Recurso movido a otra ubicación
www.eui.upm.es
www.terra.com
Request message
Response message
31 Servicio Web 12-13
GET /index.html HTTP/1.1
Host: www.eui.upm.es Accept: */*
Request message GET / index.html HTTP/1.1
Host: www.terra.com Accept: */*
HTTP/1.1 301 OK
Location http://www.terra.com Content-type: text/plain Content-length: 28
Response message
HTTP/1.0 200 OK
Date: Mon, 13 Dec 2010 12:01:13 GMT Server: apache/1.5.23 (Unix) Last-modified: Mon, 01 Jun 2010 08:00:00 GMT Content-type: text/html Content-length: 39
<html> <body>Hola amigos </body></html>
Método HEAD
Request message
Response message
Body
No existe
www.eui.upm.es
32 Servicio Web 12-13
HEAD /index.html HTTP/1.0
User-agent: Mozilla/4.75 [en] (Win98; U) Host: www.eui.upm.es Accept: text/html, image/gif, image/jpeg Accept-language: en
HTTP/1.0 200 OK
Date: Mon, 13 Dec 2010 12:01:13 GMT Server: apache/1.5.23 (Unix) Last-modified: Mon, 01 Jun 2010 08:00:00 GMT Content-type: text/html Content-length: 43567
17
Servicio Web 12-13 33
Método POST
• Características
– Datos enviados en el cuerpo del mensaje
– Tamaño ilimitado
– Cabeceras para describir el cuerpo
• Content-Type
• Content-lenght
– URL es una página dinámica/script que recibe los datos
• Envía datos de un formulario y espera la respuesta
generada a partir de esos datos.
Formularios
<html>
<BODY>
<FORM METHOD="post" ACTION=“/formu.php">
<input type="hidden" name="edad" value="55">
<p>Tu nombre <input type="text" name="nombre" size="30" value="jose"></p>
<p>Tu sistema favorito
<select size="1" name="sistema">
<option selected value="Linux">Linux</option>
<option value="Unix">Unix</option>
<option value="Macintosh">Macintosh</option>
<option value=&qmargin-left: 75"><option value="Windows">Windows</option>
</select></p>
<p>¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p>
<p>¿Cual es tu sexo?</p>
<blockquote>
<p>Hombre<input type="radio" value="hombre" checked name="sexo"></p>
<p>Mujer <input type="radio" name="sexo" value="mujer"></p>
</blockquote>
<p>Aficiones</p>
<p><textarea rows="5" name="aficiones" cols="28"></textarea></p>
<p><input type="submit" value="Enviar datos" name="enviar">
<input type="res-left: 50"> <input type="reset" value="Restablecer" name="B2"></p>
</FORM>
</BODY>
</html>
34 Servicio Web 12-13
Se genera una solicitud POST
18
Método POST para formularios
Request message
Response message
formu.php (Parametros)
www.eui.upm.es
35
POST /formu.php HTTP/1.1
Host: www.eui.upm.es Content-type: text/html
Content-length: 435
edad=55&nombre=jose&sistema=Linux&sexo=hombre&aficiones=&enviar=Enviar+datos
HTTP/1.1 200 OK
Date: Mon, 13 Dec 2010 12:01:13 GMT Server: apache/1.5.23 (Unix) Last-modified: Mon, 01 Jun 2010 08:00:00 GMT Content-type: text/html Content-length: 43
<html> <body> No lo encuentro </body></html>
Servicio Web 12-13
Enviar datos
Método PUT
Request message
Response message
www.eui.upm.es
36 Servicio Web 12-13
El servidor crea/actualiza el
recurso “/lista-productos.txt”
y lo guarda en disco
PUT /lista-productos.txt HTTP/1.1
Host: www.eui.upm.es Content-type: text/plain
Content-length: 22
Estamos elaborándola!!
HTTP/1.1 201 Created
Location: http://www.eui.upm.es/lista-productos.txt Content-type: text/plain Content-length: 41
http://www.eui.upm.es/lista-productos.txt
19
Método DELETE
Request message
Response message
www.eui.upm.es
37 Servicio Web 12-13
El servidor borra el recurso
“/lista-productos.txt” del
disco
DELETE /lista-productos.txt
HTTP/1.1
Host: www.eui.upm.es
HTTP/1.1 200 OK
Content-type: text/plain Content-length: 27
Estamos borrando el recurso
Método OPTIONS
Request message
Response message
www.eui.upm.es
Servidor solo devuelve
métodos que soporta
38 Servicio Web 12-13
OPTIONS * HTTP/1.1
Host: www.eui.upm.es Accept: */*
HTTP/1.1 200 OK
Allow: GET, POST, PUT, OPTIONS
Content-length: 0
20
Proceso de comunicación web
Conectar socket a 138.100.152.2 pto 80
Cerrar socket conexion
Enviar HTTP GET request
Leer HTTP response
Tecleo “www.eui.upm.es”
Llamo a DNS (www.eui.upm.es) -> 138.100.152.2
39 Servicio Web 12-13
El navegador interpreta el HTML
Etapas del Proceso
1.Navegador extrae nombre de servidor del URL
2.El navegador convierte (DNS) el nombre a dirección IP
3.El navegador extrae el puerto del servidor (si es necesario)
4.El navegador establece la conexión TCP con el servidor en el
puerto indicado
5.El navegador envía un HTTP-request a través de la conexión
(Método, URL, Cabeceras)
6.El servidor envía la HTTP-response de vuelta al navegador
(Código de retorno y datos solicitados)
7.El servidor cierra * la conexión TCP
8. El navegador visualiza la pagina HTML
40 Servicio Web 12-13
21
Arquitectura Servicio Web
• Modelo Cliente-Servidor
Cliente
Servidor
www.eui.upm.es
41 Servicio Web 12-13
• Posibilidad de elementos intermedios
• Interaccionan con el usuario para realizar solicitudes
a los servidores.
• Estándares W3C
Servicio Web 12-13
42
― En ellos reside toda la potencia de la interpretación de los
documentos.
― Pueden llamar a otras aplicaciones para presentar ciertos
documentos
― Pueden interaccionar con varios tipos de servicios (web, ftp, news,
mail...etc ).
Clientes Web
22
Tipos de Clientes WEB • Modo texto:
– lynx (basado en modo carácter). Se maneja con las flechas del
teclado.
– wget (muy versátil, permite el volcado de webs enteros a disco)
• Modo gráfico:
– Mosaic: El primer browser gráfico.
– Navigator (netscape)
– Internet Explorer
– Mozilla Firefox
– Google Chrome
– Otros
Servicio Web 12-13 43
Servicio Web 12-13 44
Fuente: http://www.w3schools.com/browsers/browsers_stats.asp
2013 Internet
Explorer Firefox Chrome Safari Opera
April 12,7 % 27,9% 52,7 % 4,0 % 1,7 %
March 13,0 % 28,5 % 51,7 % 4,1 % 1,8 %
February 14,3 % 29,6 % 50,0 % 4,1 % 1,8 %
Estadísticas de uso de navegadores
23
• Inicialmente eran Servidores de ficheros
‒ Después pasaron a proporcionar contenido dinámico
‒ Pueden transformarse en servidores de aplicaciones.
Servicio Web 12-13 45
• Almacenan y gestionan recursos y atienden
solicitudes de los clientes.
• Transfiere el código de la página sin interpretarlo
• Otras funciones
― Seguridad: control de acceso
― Servidores virtuales
Servidores HTTP
Servidores HTTP ligeros
• thttpd
• lighttpd
• cghttpd (en el kernel 2.6 de linux)
• darkhttpd (un solo hilo)
• kernux (módulo en el kernel de linux)
• miniature JWS-tjws (en java)
• cherokee (español)
46 Servicio Web 12-13
24
Servidores HTTP pesados
• Apache
‒ httpd-2.0.64
‒ httpd-2.2.24
‒httpd-2.4.4
• IIS (Microsoft)
• nginx
• GWS (Google WebServer)
47 Servicio Web 12-13
Mayo 2013
Apache 53,42 %
Microsoft
IIS
16,69 %
Nginx 15,52 %
Google 3,42 %
48 Servicio Web 12-13
Estadísticas de uso de servidores
Fuente: http://news.netcraft.com/archives/category/web-server-survey/
25
Apache. Características
• Características principales
– Se ajusta al protocolo HTTP 1.1
– Servidor WEB altamente configurable y de diseño modular.
– Software gratuito y de código fuente abierto.
– Funciona en varias plataformas y Sistemas Operativos: Linux,
Windows, Solaris, Mac OS X, etc.
– Permite distintos sistemas de autenticación
– Soporte de Host Virtuales
49 Servicio Web 12-13
• Proviene del servidor httpd del NCSA
– Versiones 2.0.x , 2.2.x y 2.4.x
• http://www.apache.org
Servicio Web 12-13 50
• Modulo: conjunto de directivas asociadas a una
funcionalidad concreta
– Módulos base: funciones básicas
– Módulos Multiproceso
– Cambios sin recompilar
– Servidores más flexibles
– Arranque y funcionamiento más lento.
Apache. Diseño modular
– Módulos adicionales: otras funcionalidades
• Estáticos: cargados al compilar
• Dinámicos (DSO) : enlazados dinámicamente LoadModule
26
Servicio Web 12-13 51
MPM (Módulos MultiProceso)
• Responsables de aceptar y gestionar peticiones al
servidor Web y generar los procesos hijo que se
encargan de servirlas
– Unix:
• Modo prefork: clásico basado en procesos
• Modo worker: Multihilo o hebras
‒ Windows:
• mpm-wint: un solo hijo que crea hilos
‒ Mejor rendimiento
‒ Modo worker no funciona con PHP, ni MySql
Apache. Configuración
• Ficheros de configuración:
52 Servicio Web 12-13
– httpd.conf • Puede incluir otros ficheros
– Utilización de Include o IfModule
– Logs • access.log, error.log
– Directorios adicionales (conf.d, extra, …) • ssl.conf, php.conf, httpd-vhosts.conf
– httaccess • Control descentralizado de directorios
27
Servicio Web 12-13 53
Directivas de configuración
• Se especifican por:
– Descripción
– Sintaxis: Nombre y parámetros
– Contexto de uso:
server config, virtual host, directory, htaccess, etc.
– Valor por defecto
– Módulo del que forman parte
– Override
– Estado
– Compatibilidad
Servicio Web 12-13 54
Description: Base directory for the server installation
Syntax: ServerRoot directory-path
Default: ServerRoot /usr/local/apache
Context: server config
Status: Core
Module: core
Ejemplo de Directiva
ServerRoot Directive
28
httpd.conf
El contenido se clasifica en 3 zonas: (http://httpd.apache.org/docs/2.2/mod/core.html)
55 Servicio Web 12-13
– Sección 1: Global environment
• Definiciones globales del servidor
– Sección 2: Servidor principal
• Definen la forma de responder a todos los pedidos del
servidor principal.
• Reúne los aspectos por defecto de todos los hosts virtuales.
– Sección 3: Virtual host
• Agrupa las directivas relacionadas con los hosts virtuales
que se definan.
httpd.conf: Sección 1
• Global environment ( 1)
56 Servicio Web 12-13
– ServerRoot: • Ruta donde está instalado el servidor.
• Aquí se guardan los ficheros de configuración, error y log
• Las búsquedas se realizan a partir de este directorio
– ServerRoot "/etc/httpd"
– ServerRoot "C:/xampp/apache“
– PidFile
• Especifica el fichero donde se almacena el identificador del proceso
‒ PidFile logs/httpd.pid
– Timeout: • Tiempo máximo de envíos y respuestas.
– Timeout 300
29
httpd.conf: Sección 1
– KeepAlive: • Permite conexiones persistentes.
– KeepAlive On
57 Servicio Web 12-13
• Global environment ( 2)
– MaxKeepAliveRequest • Permite restringir el número de “request” en cada conexión
persistente.
– MaxKeepAliveRequests 100
– KeepAliveTimeout • Indica el número de segundos que se esperará por el próximo
request de un mismo cliente a través de la misma conexión.
– KeepAliveTimeout 5
• Global environment (3)
58 Servicio Web 12-13
httpd.conf: Sección 1
– Listen
• Interfaz de red y/o el puerto a través de los cuales el servidor
Apache escucha las solicitudes de los clientes.
– Listen [IP-address:] portnumber
– Listen 0.0.0.0:80
– Listen 80
– MaxClients
• Permite indicar la cantidad máxima de clientes conectados
simultáneamente al servidor.
• Depende del MPM utilizado
30
• Global environment (4)
59 Servicio Web 12-13
httpd.conf: Sección 1
– LoadModule
• Los módulos incorporan nuevas funcionalidades al servidor.
• Permite cargar un módulo dentro del servidor Apache.
– LoadModule module filename
– LoadModule auth_basic_module modules/mod_auth_basic.so
– Include
• Permite incluir otro fichero como parte de la configuración de Apache.
– Include "conf/extra/httpd-xampp.conf“
– mod_alias: directivas para alias y redirección
• Alias, Redirect
– mod_authz_hosts: control de acceso basado en IP/nombre
• Order, Allow, Deny
– mod_dir: directivas servir índices de directorios
• DirectoryIndex
– mod_log_config: directivas para hacer log de las solicitudes al
servidor
• CustomLog, LogFormat
– mod_mime: directivas para definir lenguajes, métodos de
codificación, etc.
• DefaultLanguage, AddLanguage, TypesConfig, etc
– mod-ssl: directivas para implementar un servidor seguro
basado en SSL
60 Servicio Web 12-13
Módulos dinámicos
31
Httpd.conf. Sección 2
• Servidor principal (1)
– Port: • Puerto TCP que Apache escucha solicitudes
• Solo tiene sentido si no está Listen
61 Servicio Web 12-13
– ServerAdmin:
• Dirección de correo electrónico para avisar errores en el servicio.
– ServerAdmin [email protected]
– User/Group
• El nombre (o número) del usuario y del grupo que ejecuta el servidor.
• Se suele crear un usuario específico para no comprometer la seguridad
del todo el sistema.
– User www-data
– Group www-data
Httpd.conf. Sección 2
• Servidor principal (2)
62 Servicio Web 12-13
– DocumentRoot
• Indica el directorio a partir del cual se localizarán todos los
documentos proporcionados por el servidor.
– DocumentRoot "C:/xampp/htdocs“
– DocumentRoot “/usr/local/apache/htdocs”
– ServerName
• Hostname y puerto que el servidor utiliza para identificarse a si mismo
• Si no se pone, Apache intenta determinar el nombre por DNS.
• Identificación de hosts virtuales
– ServerName www.eui.upm.es
32
Httpd.conf. Sección 2
• Servidor principal (3)
– DirectoryIndex
• Indica la información que se devolverá en caso de que se solicite
acceso a un directorio.
• Si Apache no puede encontrar la página por defecto, intentará la
siguiente entrada en el parámetro.
– DirectoryIndex index.htm index.html index.php index.php3
default.html
• Si no existe ninguna y está activa la opción Indexes devuelve el
listado del directorio
63 Servicio Web 12-13
Httpd.conf. Sección 2
• Servidor principal (4)
– UserDir
• Indica el directorio personal de cada usuario del sistema.
• Por defecto: public_html
– UserDir disabled
UserDir enabled user1 user2 user3
Userdir public_html
Userdir /usr/web
64 Servicio Web 12-13
– Una petición:
» http://www.foo.com/~bob/one/two.html
Se traduce a :
UserDir public_html => ~bob/public_html/one/two.html
UserDir /usr/web => /usr/web/bob/one/two.html
33
Httpd.conf. Sección 2
• Servidor principal (5)
– LogLevel: • controla los tipos de error y accesos almacenados
- loglevel warm
– ErrorLog • Ruta donde se almacenan los Log con los errores del servidor:
peticiones inexistentes, etc.
• El directorio debe estar previamente creado – ErrorLog "logs/error.log“
65 Servicio Web 12-13
– CustomLog • Asignan la ruta donde se almacenan los logs de acceso
– CustomLog logs/access.log common
– . LogFormat • Formato de los logs que se registran
– LogFormat "%h %l %u %t \"%r\" %>s %b“ common
Httpd.conf. Sección 2
• Servidor principal (6)
– ServerTokens:
• Información en la cabecera de las respuestas HTTP sobre el
servidor
― ServerTokens full
(Servidor, versión, SO, módulos instalados)
―Otras posibilidades: OS, Minimal, Prod,
66
– ServerSignature:
• Información dada por el servidor en las páginas generadas de
manera automática
― ServerSignature off
.
Servicio Web 12-13
34
Httpd.conf. Sección 2
• Directivas limitadas en contexto: ámbito de actuación
―<Directory nombre_directorio> .. </Directory> • Se emplea para encerrar un conjunto de directivas (características y
acceso) a aplicar a uno o varios directorios
• Se refiere a una ruta del sistema de ficheros
67 Servicio Web 12-13
― <File> .. </File> • Especifica directivas para aplicar de acuerdo a los ficheros
accedidos sin importar la ruta del fichero
– <Location> .. </Location>
• Especifica directivas para aplicar de acuerdo al URL accedido
– <Limit> .. </Limit> • Especifica directivas en función del método utilizado: GET, POST, etc
Httpd.conf. Sección 2
• <Directory nombre_directorio> .. </Directory>
68 Servicio Web 12-13
– Options: controla qué características del servidor están
disponibles en un directorio.
• None, All
• [+/-] opcion – Por defecto se usan las opciones del contenedor <Directory> mas
especifico.
– Las options mas externas se ignoran
– +/- añade o quita sobre el contenedor <Directory> externo
• Indexes, Includes, FollowSymLinks, ExecCGI, MultiViews
• ExecCGI:
– Se pueden ejecutar los scripts de tipo CGI
• Indexes:
– Cliente solicita un directorio y no existe ninguno de los ficheros
especificados en DirectoryIndex se devuelve LISTADO del directorio.
• Include:
– permite el mecanismo Server Side Includes (sustituciones tipo php)
35
Httpd.conf. Sección 2
• <Directory nombre_directorio> .. </Directory>
69 Servicio Web 12-13
– Allow, deny
• Permiten definir que hosts (IP/nombre) tienen o no acceso al bloque
donde se definen.
– Allow from .upm.es
– Deny from 138.100.0.0/16
– Allow from all
– Order [allow, deny] / [deny, allow]
• Orden en que se aplican estas directivas
• Deny, allow: restricciones antes que permisos
• Allow,deny: permisos antes que restricciones,
Control de acceso de hosts
Match Allow,Deny result Deny,Allow result
Match Allow only Request allowed Request allowed
Match Deny only Request denied Request denied
No match Default to second directive: Denied
Default to second directive: Allowed
Match both Allow &
Deny
Final match controls: Denied
Final match controls: Allowed
Servicio Web 12-13 70
36
Httpd.conf: Sección 2
• Fichero de permisos .htaccess
– Se encuentra dentro del árbol del contenido WEB.
– Define directivas aplicables al contenido en ese nodo, e hijos,
dentro del árbol de contenido WEB.
– Se considera en cada nueva petición sobre esa parte
– No se recomienda su uso: seguridad, eficiencia
• Mejor todo en http.conf
71 Servicio Web 12-13
– Para su uso es necesario especificar en httpd.conf
• AccessFileName
Indica los nombres de los ficheros donde se pueden colocar las
directivas aplicables a un directorio determinado.
– AccessFileName .htaccess
• AllowOverride
Httpd.conf. Sección 2
– AllowOverride
• Las directivas presentes en un fichero especificado en
AccessFileName sobrescriben el valor de las encontradas
en el fichero de configuración:
72 Servicio Web 12-13
– All y None: permite sobreescribir todas directivas o ninguna.
– Options: permite que sobreescriba la directiva options.
– Indexes: permite que se sobrescriban todas las directivas
relacionadas con la indexación de los directorios.
– Limit: permite la sobrescritura de directivas que controlan el
acceso por máquina (Order, Allow y Deny).
– AuthConfig: permite el uso de directivas que controlan el
acceso por autenticación
– FileInfo: permite la sobrescritura de las directivas que
controlan el tipo de documentos (lenguaje, errores)
37
Ejemplos (1)
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
73 Servicio Web 12-13
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow, deny
Allow from all
</Directory>
Ejemplos (2)
74 Servicio Web 12-13
<Directory "C:/xampp/htdocs/directorio1">
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
AllowOverride FileInfo AuthConfig Limit Indexes
<Limit GET POST>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST >
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
38
Servicio Web 12-13 75
<Limit GET>
order deny,allow
deny from all
allow from eui.upm.es fi.upm.es
</Limit>
• El control de acceso a un subdirectorio se puede
establecer poniendo en él un fichero .htaccess
Ejemplos (3)
Httpd.conf. Sección 2
• Alias
– Permite redireccionar a un directorio que puede estar fuera del árbol de
directorios especificado en DocumentRoot.
• Alias /dir1 /usr/share/apache/doc
– http://www.domain.com/dir1/index.html
– Apache accede a: /usr/share/apache/dir1/index.html
76 Servicio Web 12-13
• Manipulación de URL’s
– Mapean URLs a Paths del sistema de ficheros
– Alias, ScriptAlias
– Definir permisos del directorio:
Alias /dir1 /usr/share/apache/dir1
<Directory /usr/share/dir1>
Order allow,deny
Allow from all
</Directory>
39
Httpd.conf. Sección 2
• ScriptAlias
– Similar a Alias, pero especifica que directorios contienen scripts
• ScriptAlias /cgi-bin/ /web/cgi-bin/
– http://myserver/cgi-bin/foo
– El servidor ejecuta el script /web/cgi-bin/foo
– Es equivalente a:
Alias /cgi-bin/ /web/cgi-bin/
<Location /cgi-bin >
SetHandler cgi-script
Options +ExecCGI
</Location>
– 77 Servicio Web 12-13
Httpd.conf. Sección 2
• Redirect
– Traduce una URL a otra que puede estar en otro servidor
• Redirect [status] URL-path URL
– Redirect temp /uno http://www.ejemplo.com/otro
– Las peticiones a http://prueba.com/uno/fichero.txt o serán dirigidas a
http:// www.ejemplo/com/otro/fichero.txt
78 Servicio Web 12-13
– Códigos de Respuesta asociados
• 301 Redirección permanente
• 302 Redirección temporal, es el valor por defecto.
• 303 Contenido reemplazado
• 410 Contenido ya no existe
40
Servicio Web 12-13 79
• Posibilidad de ejecutar más de un sitio web por el
mismo servidor/demonio.
Cliente
Serv
ido
r A
pach
e
VHost 1
VHost 2
VHost 3
• Tipos de Hosts virtuales
– Basados en IP
– Basados en Nombre
– Basados en puerto
Httpd.conf. Hosts virtuales
Servicio Web 12-13 80
Hosts virtuales basados en IP
• Hay que disponer de tantas direcciones IP como
Hosts virtuales se quieran configurar.
• Los valores no especificados se toman de la
configuración del servidor principal
Listen dirIPx:puerto/s
<VirtualHost dirIPx>
DocumenttRoot xxxx
ServerName xxxx
ServerAdmin xxxx (opcional)
LLLLog xxxx (opcional)
</Virtual Host>
• Para cada Host Virtual:
41
• Hosting Virtual basado en IPs (Una dirección IP para cada sitio web)
81 Servicio Web 12-13
Httpd.conf: Sección 3
<VirtualHost 192.3.4.5>
ServerAdmin [email protected]
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
CustomLog /groups/baygroup/logs/access_log
</VirtualHost>
– En el mismo apache
<VirtualHost 138.100.152.34>
ServerAdmin [email protected]
DocumentRoot /groups/smallco/www
ServerName www.smallco.com
ErrorLog /groups/smallco/logs/error_log
CustomLog /groups/smallco/logs/access_log
</VirtualHost>
Servicio Web 12-13 82
Hosts virtuales basados en nombre
NameVirtualHost 127.0.0.1: port
<VirtualHost nombreX>
ServerName www.servidorx.com
DocumenttRoot xxxx
ServerAdmin xxxx (opcional)
LLLLog xxxx (opcional)
</VirtualHost>
• Una sola dirección IP y tantos nombres de dominio
como Hosts virtuales se quieran configurar.
• Uso obligatoria de cabecera host
NamevirtualHost: identifica un conjunto de hosts virtuales
42
Httpd.conf: Sección 3 • Hosting Virtual basado en nombres
– Estamos sirviendo el dominio www.domain.tld y
– Queremos añadir el host virtual www.otherdomain.tld, que
apunta a la misma dirección
83 Servicio Web 12-13
– Directivas: <VirtualHost>, NameVirtualHost, ServerName,
ServerAlias
• NameVirtualHost :identifica el conjunto de servidores virtuales
• ServerName: identifica el nombre que viene en la petición (campo
“Host:”)
• ServerAlias: nombres alternativos en la petición
– El "servidor principal" nunca servirá una petición a un dirección
IP especificada en NameVirtualHost
• Salvo que se defina NameVirtualHost pero no se especifique
ningún VirtualHost para esa dirección.
Httpd.conf: Sección 3 • Ejemplo de Host Virtual basado en nombres
NameVirtualHost *:80
84 Servicio Web 12-13
# Segundo Host virtual
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
# Host virtual para el servidor principal
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
43
Httpd.conf: Sección 3 • Otro ejemplo
Listen 80 NameVirtualHost 172.20.30.40:80 <VirtualHost 172.20.30.40:80> ServerName www.example1.com DocumentRoot /www/domain-80 </VirtualHost>
<VirtualHost 172.20.30.40:80> ServerName www.example2.org DocumentRoot /www/otherdomain-80 </VirtualHost>
85 Servicio Web 12-13
Listen 8080 NameVirtualHost 172.20.30.40:8080
<VirtualHost 172.20.30.40:8080> ServerName www.example1.com DocumentRoot /www/domain-8080 </VirtualHost>
<VirtualHost 172.20.30.40:8080> ServerName www.example2.org DocumentRoot /www/otherdomain-8080 </VirtualHost
Practicas Servidor Apache (1)
• XAMPP sobre Windows
• Instalar servidor apache
• Configuración por defecto
• Acceder mediante navegador: http://localhost
– Comprobar que se accede a la pagina de inicio de XAMPP
• Acceder mediante telnet: telnet localhost 80
– Analizar el resultado obtenido
86 Servicio Web 12-13