Índice - wordpress.com · 2015-03-17 · –wide: a lo ancho, de alcance. –web: tela de araña....

44
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

Upload: others

Post on 05-Jan-2020

2 views

Category:

Documents


0 download

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

44

Practicas Servidor Apache (2)

• Comprobar la estructura del árbol de directorios

• Analizar el contenido del fichero de configuración

httpd.conf

• Configuración personalizada

87 Servicio Web 12-13

Servicio Web

Fin Tema = Fin de Curso

A. Mozo/ A. Lorenzo

88 Servicio Web 12-13