El Servidor Web Apache

Transcripción

El Servidor Web Apache
El Servidor Web Apache
Diseño y Administración de Sistemas y Redes
http://gsyc.es
Curso 2007–2008
HTTP
1
HTTP
Hypertext Transfer Protocol.
Es el protocolo más habitual para servir páginas web.
Protocolo cliente-servidor.
Normalmente funciona sobre TCP. Normalmente en el puerto 80.
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
2
Web 1.0. Estática. 1994-1997
Tecnologı́a asociada: HTML, GIF
Las páginas web son documentos estáticos que se actualizan a mano
Web 1.5. Dinámica. 1997-2003
Tecnologı́a asociada: CGI, DHTML, ASP, CSS.
Las páginas web son construidas dinámicamente a partir de una o
varias bases de datos.
Web 2.0. Colaborativa. 2003-Hoy
Tecnologı́a asociada: Ajax, DHTML, XML, Soap.
Definición controvertida. Los usuarios se convierten en contribuidores.
Publican las informaciones y realizan cambios en los datos.
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
3
Interacción cliente-servidor en HTTP
El cliente abre una conexión TCP con el servidor.
El cliente envı́a un mensaje de petición.
El servidor responde con un mensaje de respuesta.
El servidor cierra la conexión TCP.
HTTP no mantiene estado (no hay información sobre las conexiones entre
una petición y otra).
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
4
Un servidor HTTP puede escuchar en cualquier puerto
Puertos del 1 al 1023: Bajos o Privilegiados. Solo el root puede atar
procesos a estos puertos
Puertos del 1024 al 65535: Altos o no Privilegiados. Cualquier usuario
puede atar procesos a estos puertos
El puerto por omisión es el 80
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
5
Formato de los mensajes
Mensajes “legibles” (compuestos por lı́neas de texto “casi en inglés”):
Lı́nea inicial (diferente para petición y respuesta), terminada en CRLF.
Cero o más lı́neas de cabecera, cada una terminada en CRLF:
Cabecera-X: Valor-X CRLF
Lı́nea en blanco (CRLF), también expresable como \r\n. En un teclado normalmente se genera pulsando intro.
Cuerpo del mensaje (opcional).
Además de CRLF, deberı́an tratarse adecuadamente lı́neas terminadas en
LF.
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
6
Lı́nea inicial (peticiones)
Especifica el recurso que se solicita, y qué se quiere de él:
Nombre de método (GET, POST, HEAD).
Camino de acceso (path)
Versión de HTTP (siempre HTTP/x.x).
Ejemplo:
GET /directorio/otro/fichero.html HTTP/1.0
El servidor ignora a qué dirección IP o a qué nombre de dominio envió la
petición el cliente
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
7
Lı́nea inicial (respuestas)
Proporciona información de estado:
Versión de HTTP (siempre HTTP/x.x).
Código numérico de estado.
Código de estado “en inglés”.
Códigos de estado:
1xx: Mensaje informativo.
2xx: Resultado exitoso (200 OK).
3xx: Redirección del cliente a otra URL (301 Moved permanently, 303
See Other).
4xx: Error en el lado del cliente (404 Not Found).
5xx: Error en el lado del servidor (500 Server Error).
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
8
Lı́neas de cabecera
Mismo formato que las cabeceras de correo y News (RFC 822, sección 3).
HTTP/1.0: 16 cabeceras, ninguna obligatoria.
HTTP/1.1: 46 cabeceras, “Host:” obligatoria en las peticiones (usada
por los “virtual hosts”).
Se recomienda incluir en las peticiones al menos:
• “From:” (dirección de correo).
• “User-Agent:” (ej: Mozilla/4.7).
Se recomienda incluir en las respuestas al menos:
• “Server:” (ej: Apache/1.3).
• “Last-Modified:” (fecha GMT, usado por las caches).
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
9
Cuerpo del mensaje
En las respuestas contiene el recurso pedido o texto explicando un
error.
En las peticiones contiene datos de usuario o ficheros para subir.
Si hay cuerpo, normalmente hay algunas cabeceras relativas a él:
• “Content-Type”: tipo MIME de los datos (ej: text/html, image/png).
• “Content-Length”: número de bytes en el cuerpo.
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
10
Ejemplo (GET, petición)
Petición http 1.0 “mı́nima”:
koji@mazinger:~$ telnet pantuflo.es 80
GET / HTTP/1.0\r\n
\r\n
(El telnet no forma parte de la petición, equivale al navegador web)
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
11
Petición http 1.0 completa
GET /~jgb/test.html HTTP/1.0\r\n
Connection: Keep-Alive\r\n
User-Agent: Mozilla/4.07 [en] (X11; I; Linux 2.2.15 i586; Nav) ...
Host: gsyc.escet.urjc.es\r\n
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, i ...
Accept-Encoding: gzip\r\n
Accept-Language: en\r\n
Accept-Charset: iso-8859-1,*,utf-8\r\n
\r\n
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
12
Ejemplo (GET, respuesta)
HTTP/1.1 200 OK\r\n
Date: Tue, 23 Jan 2001 12:44:27 GMT\r\n
Server: Apache/1.3.9 (Unix) Debian/GNU\r\n
Last-Modified: Tue, 23 Jan 2001 12:39:45 GMT\r\n
ETag: "19e89f-22-3a6d7b91"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 34\r\n
Keep-Alive: timeout=15, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html\r\n
\r\n
<html>\nEsto es una prueba\n</html>
c
2008
GSyC
>.
El Servidor Web Apache
HTTP (cont.)
13
Métodos HEAD y POST
HEAD:
Igual que un GET, pero sólo pide las cabeceras.
Se pueden consultar las caracterı́sticas sin bajarse el fichero.
POST:
Hay datos en el cuerpo (que se “suben” al servidor).
El URI “pedido” es normalmente el programa que trata los datos
enviados.
También se pueden enviar datos con un GET (codificándolos en el
URL pedido).
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
14
Representante (proxy) HTTP
Intermediario entre un cliente y un servidor.
Es por lo tanto a la vez cliente y servidor.
Usos: cortafuegos, caches, etc.
Las peticiones a una proxy incluyen la URL completa en la primera
lı́nea del mensaje de petición.
Pueden encadenarse varias proxies.
Ejemplo de petición a una proxy:
GET http://gsyc.escet.urjc.es/index.html HTTP/1.0
Para el exterior, todos los usuarios que están detrás de un proxy comparten
la dirección IP
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
15
Los proxys son buenos
Para el usuario porque reducen la latencia
Para el ISP del usuario, porque ahorra tráfico
Para el servidor, porque ahorra tráfico
Para el resto de Internet (tocan a más)
Proporcionan anonimato
Los proxys pueden plantear problemas
Cachés desfasadas
Algunos servidores pueden pensar erróneamente que 1 IP = 1 usuario
• Lı́mites en las descargas
• Una IP en una lista negra puede perjudicar a muchos usuarios
inocentes
• ...
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
16
HTTP 1.1
Es una evolución de HTTP 1.0.
Facilidades especı́ficas para máquinas virtuales (virtual hosts).
Codificación por racimos, para respuestas dinámicas (envı́o antes de
saber el tamaño total).
Uso de conexiones persistentes que permiten varias transacciones sucesivas (se evitan establecimientos de conexión).
Facilidades especı́ficas para caches (“If-Modified-Since”, “If-UnmodifiedSince”).
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
17
Virtual hosts
En HTTP 1.1 la petición incluye el nombre de host. De esta forma
un mismo servidor puede albergar varios hosts virtuales
Si un servidor recibe una petición sin “Host”, debe devolver un mensaje de error (400 Bad Request).
Los servidores también han de aceptar primeras lı́neas de petición con
URLs completas, en lugar de caminos (será lo habitual en versiones
futuras).
Ejemplo de petición http 1.1 “mı́nima”:
koji@mazinger:~$ telnet pantuflo.es 80
GET /dir/index.html HTTP/1.1\r\n
Host: pantuflo.es\r\n
\r\n
c
2008
GSyC
El Servidor Web Apache
HTTP (cont.)
18
Conexiones persistentes
Abrir y cerrar una conexión TCP tiene un coste relativamente alto
HTTP 1.1. usa por omisión conexiones persistentes
Permiten que varias peticiones y respuestas sean transferidas usando
la misma conexión TCP.
Si se envı́a la cabecera “Connection: close”, el servidor cerrará la
conexión después de cada respuesta.
Un servidor puede cerrar la conexión antes de enviar todas las respuestas.
El servidor cerrará las conexiones inactivas pasado un plazo (ej: 10
segundos).
c
2008
GSyC
El Servidor Web Apache
Apache
19
Apache
Servidor ’web’. Responde a peticiones HTTP 1.0/1.1 (referidas a
URLs) , devolviendo los documentos alojados en la máquina
Inicialmente, 1995 basado en el httpd 1.3 de la NCSA (National Center for Supercomputing Applications). Era el servidor más popular.
El nombre es una deformación de ’patches’ (parches)
Primer proyecto de la fundación Apache, que desarrolla numerosas
tecnologı́as orientadas al servidor
Software libre, distribuido bajo la Apache Software License. Disponible
para diversos Unix (Linux, BSD...), Microsoft Windows, Mac OS
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
20
Usado en el 50 % de los web sites mundiales (Netcraft Web Server
Survey, mayo 2008)
Es la base del conjunto de aplicaciones LAMP (Linux, Apache, MySQL,
Perl/PHP/Python)
Se distribuye con Oracle Database, IBM WebSphere application server, Mac OS X WebObjects, entre otros
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
21
http://news.netcraft.com/archives/web_server_survey.html
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
22
Versiones de Apache
Existen dos ramas o versiones principales:
Apache 1.3. Año 2000.
Apache 2.0. Abril 2002. Añade multithreading (hoy ya no es ventaja),
filtros. API mejorada que facilita la programación de módulo. Desaparecen las directivas Port y BindAddress. (Solo se mantiene Listen)
Apache 2.0 tardó mucho tiempo en reemplazar a Apache 1.3, y aún no lo
ha hecho por completo. En el año 2008 se siguen desarrollando actualizacones de seguridad para Apache 1.3
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
23
Instalación de Apache en Debian
En debian, la instalación de apache es muy sencilla gracias a apt.
apt-cache search apache
Muestra todos los paquetes conocidos que contienen apache. Mejor hacer:
apt-cache search apache --names-only | grep -v lib
Instalación (como root):
aptitude install apache2
Instala las librerias, ejecutables, directorios y ficheros de configuración
necesarios.
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
24
Arranque de Apache
Se puede iniciar y detener como cualquier demonio
/etc/init.d/apache2 [stop|start|reload}
También puede hacerse con apache2ctl, que incluye funcionalidad adicional
/usr/sbin/apache2ctl <command>
start
- start httpd
stop
- stop httpd
restart
- restart httpd
fullstatus - dump a full status screen
status
- dump a short status screen
graceful
- do a graceful restart
configtest - do a configuration syntax test
graceful restart: Reiniciar el servidor cerrando ordenadamente las peticiones pendientes
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
25
Ficheros y Directorios por omisión en Debian para Apache 2.x
Configuración
/etc/apache2/apache2.confa
Tras cambiar este fichero hay que reiniciar el demonio o releer el fichero
Raı́z de documentos (DocumentRoot)
/var/www
CGIs
/usr/lib/cgi-bin
Logs
/var/log/apache2/error.log
/var/log/apache2/access.log
a En
apache 1.x se usaba /etc/apache/httpd.conf, /etc/apache/srm.conf y
/etc/apache/access.conf
c
2008
GSyC
El Servidor Web Apache
Apache (cont.)
26
Definición de Host Virtuales
/etc/apache2/sites-available
(Un fichero por cada host virtual)
Host Virtuales Activos
/etc/apache2/sites-enabled
(Para activar un host virtual, se incluye aquı́ un enlace simbólico a su fichero
de definición)
Puertos en los que se atienden peticiones
/etc/apache2/ports.conf
Para otras versiones, googlear Distros Default Apache Layout
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache
27
Directivas de Apache
La configuración de apache se hace mediante directivas. (Insensibles a
mayúsculas). La lista completa está en la documentación online.
googlear: apache versión directives (p.e. apache 2.2 directives)
El manual describe cada directiva y en qué contexto(s) puede aparecer.
Se pueden usar la almohadilla para que una lı́nea sea un comentario, pero
solo en la primera columna
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
28
Los contextos posibles son
c
2008
GSyC
server config
#Afectan a todo el servidor
virtual host
#Afectan al host virtual
directory
#Afectan a un directorio (del host)
files
#Afectan a los ficheros con cierto nombre
location
#Afectan a un directorio (del web)
.htaccess
#Afectan a un directorio y sus subdirectorios
El Servidor Web Apache
Directivas de Apache (cont.)
29
Contexto server config
Las directivas en este contexto afectan a todo el servidor. Se ubican en
lı́neas de /etc/apache2/apache2.conf que no están dentro de ningún
bloque
Contexto virtual host
Las directivas dentro de un bloque VirtualHost afectan solo al host virtual
<VirtualHost host [:puerto]>
< /VirtualHost host>
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
30
<VirtualHost www.discosmanzana.com>
ServerName www.discosmanzana.com
DocumentRoot /var/www/discosmanzana
ServerAdmin [email protected]
</VirtualHost>
<VirtualHost www.libreriamazonas.com>
ServerName www.libreriamazonas.com
DocumentRoot /var/www/libreriamazonas
ServerAdmin [email protected]
</VirtualHost>
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
31
Contexto Directory
Las directivas dentro de un bloque Directory afectan solo a los ficheros de
ese directorio y no al DocumentRoot completo
<directory mi-directorio>
</directory>
mi-directorio tiene que ser path absoluto, no relativo al DocumentRoot
Ejemplo
<Directory /var/www/discosmanzana/proveedores>
options +indexes
</Directory>
No puede usarse dentro de un fichero .htaccess
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
32
Contexto files
<Files mi-fichero>
directiva_1
directiva_2
</Files>
Se pueden usar comodines o regexps con FilesMatch
<FilesMatch mi-fichero>
</FilesMatch>
Los bloques Files y FilesMatch pueden usarse dentro de un fichero .htaccess
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
33
Contexto Location
En un servidor muy sencillo, la estructura de directorios del host coincide con la estructura de directorios que percibe el cliente web. En
este caso, Directory equivale a Location
Usando la directiva alias, ambas estructuras de directorios son distintas, con Location especificamos un directorio tal y como lo ve el
cliente web
Las directivas dentro de un bloque Location afectan a los ficheros dentro
de esa URL
<Location mi-url>
</Location>
mi-url es una dirección relativa al DocumentRoot
LocationMatch permite usar comodines y regexp
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
34
Ejemplo
<Location /proveedores>
options +indexes
</Location>
No puede usarse dentro de un fichero .htaccess
Para proteger un directorio, es mucho más seguro usar Directory que
Location (podemos confundirnos con los alias....)
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
35
Contexto .htaccess
Estas directivas no están centralizadas en /etc/apache2/apache2.conf
sino distribuidas en ficheros .htaccess
Puede haber uno en cada directorio, afecta solo a este directorio
Normalmente apache2.conf deberı́a editarlo el root o el webmaster,
mientras que cada usuario en sus directorios puede editar sus .htaccess
Ventajas del fichero .htaccess:
• No hay que reiniciar apache
• Un usuario puede tener permiso para modificar su propio .htaccess
pero no apache2.conf
Inconvenientes:
• Cada vez que se sirve un documento hay que procesar el .htaccess,
ası́ como los .htaccess que pueda haber en sus directorios padre
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
36
.htaccess afecta a un directorio y a sus directorios, por tanto el
comportamiento de un directorio depende de su .htaccess, de el de
su directorio padre, abuelo...
En caso de discrepancia prevalece el .htaccess local
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
37
¿Las directivas en .htaccess pueden contradecir a las directivas en apache2.conf?
Depende de lo que diga AllowOverride
Si aparece AllowOverride All, o si no parece nada, sı́ pueden contradecir
Por omisión, Debian emplea AllowOverride None, que ignora completamente los .htaccess (no leer estos ficheros supone además cierto ahorro)
Esta directiva permite un ajuste fino, que unas directivas se puedan
contradecir y otras no
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
38
Algunas directivas Server Config importantes
En apache2.conf aparecen algunas directivas que establecen la ubicación
de ciertos ficheros y directorios. Vienen adaptadas a Debian, es raro tener
que modificarlas
ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
ErrorLog /var/log/apache2/error.log
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/sites-enabled/
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
39
Normalmente será necesario que el nombre de máquina coincida con la
configuración del DNS
ServerName localhost
DocumentRoot indica dónde están los ficheros a servir
DocumentRoot /var/www
La dirección de correo del administrador aparece en algunos informes
ServerAdmin webmaster@localhost
El proceso que escucha en el puerto 80 debe pertenecer al root. Este pasa
las peticiones a otros procesos, hijos suyos, que pertenecen a un usuario
con menos privilegios.
User www-data
Group www-data
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
40
Apache adapta el número de procesos a la carga. Crea nuevos procesos
bajo demanda y controla que queden algunos ’libres’ para picos de carga.
En sitios web sencillos no cambiaremos los valores por omisión
StartServers 5
Número de procesos iniciales.
MinSpareServers 5
Número mı́nimo de procesos libres.
MaxSpareServers 10
Números máximo de procesos libres.
MaxClients 150
Número máximo de clientes servidos simultaneamente.
MaxRequestsPerChild 100
Número de peticiones antes de matar el proceso (para paliar memory leaks)
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
41
Control de conexiones persistentes
Según el campo Connection: y la versión del protocolo HTTP, las conexiones son persistentes o no
Las conexiones persistentes son ventajosas para el cliente, pesadas para el
servidor
KeepAlive on/off
Se aceptan conexiones persistentes
MaxKeepAliveRequests 5
Max. numero de peticiones que mantienen la conexión.
KeepAliveTimeout 5
Tiempo max (segs) entre peticiones.
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
42
Control de IPs y puertos de escucha
Un mismo host puede ejecutar varios servidore apache simultáneamente
(de distintos usuarios o con distintas configuraciones)
Un mismo host suele tener varios interfaces de red
Interfaz lo con dirección 127.0.0.1, asociada al nombre localhost
Interfaz eth0, eth1, wlan0, ppp0,...
Cada interfaz tiene una IP. (Puede tener más, aunque no es muy frecuente)
Por defecto, apache escucha en el puerto 80 de todas las direcciones IP
de todos los interfaces de la máquina
Listen 80
Listen 1000
Escucha en los puertos 80 y 100 de todos los interfaces
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
43
Listen 127.0.0.1:80
Listen mazinger:1000
Escucha solamente en el puerto 80 de 127.0.0.1 (deberı́a estar asociado a localhost) y en el puerto 1000 de mazinger
Pueden usarse direcciones IP o nombres de máquinas (si se resuelven en
/etc/hosts o en el DNS)
La directiva Listen sustituye a las directivas obsoletas Port y BindAddress.
El ámbito de Listen es server config. Debemos indicar con Listen los
puertos (y si queremos, también las direcciones) de todas las peticiones que atenderemos.
Posteriormente, en cada máquina virtual especificaremos interfaz y
puerto (si procede)
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
44
Host Virtuales
Si para distinguir un host de otro hay que considerar el nombre que figura
en la petición, debe incluirse la directiva NameVirtualHost. (Si los hosts
se distinguen por la IP o el puerto, no hace falta)
Fichero /etc/apache2/sites-avalaible/discosmanzana
NameVirtualHost 213.37.48.21
<VirtualHost www.discosmanzana.com>
ServerName www.discosmanzana.com
DocumentRoot /var/www/discosmanzana
ServerAdmin [email protected]
</VirtualHost>
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
45
Fichero /etc/apache2/sites-avalaible/libreriamazonas
<VirtualHost www.libreriamazonas.com>
ServerName www.libreriamazonas.com
DocumentRoot /var/www/libreriamazonas
ServerAdmin [email protected]
</VirtualHost>
Directorio /etc/apache2/sites-enabled/libreriamazonas
000-default -> /etc/apache2/sites-available/default
010-discosmanzana -> /etc/apache2/sites-available/discosmanzana
020-libreriamazonas -> /etc/apache2/sites-available/libreriamazonas
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
46
Otras directivas
alias /directorio2 /var/www-bis/directorio2
hace que http://mihost/directorio2 se corresponda con
/var/www-bis/directorio2
y no con DocumentRoot (/var/www/directorio2)
UserDir public_html
Nombre del directorio añadido al home del usuario ’user’, cuando se
recibe una petición a ~user
DirectoryIndex index.html index.htm index.cgi
Si el cliente no solicita un fichero sino un directorio, se buscan estos
ficheros, en este orden
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
47
Directiva Options
Una directiva algo peculiar, permite activar o desactivar opciones variadas.
Seguramente serı́a más lógico si cada opción fuera una directiva independiente. Puede aparecer en cualquier contexto
Las más importantes:
All - Todas las opciones están activadas
None - Ninguna opción está activada
ExecCGI - Se permite la ejecución de CGIs
Indexes - Si el usuario pide un directorio que no contiene lo indicado
por DirectoryIndex (index.html, index.htm, index.cgi...) se muestra el
contenido del directorio
MultiViews - Se negocian formatos de datos o idiomas
FollowSymLinks - Se siguen los enlaces simbólicos
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
48
SymLinksIfOwnerMatch - Se siguen los enlaces simbólicos solo si el
dueño del recurso apuntado es el dueño del enlace
Ejemplo. Habilitar los ı́ndices, deshabilitar los enlaces simbólicos:
options +Indexes -FollowSymLinks
Si no hay directiva Options, se activan todas las opciones
Si hay directiva Options, solo se activan las opciones indicadas explı́citamente. El resto se desactiva
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
49
Control de acceso a directorios
Order, Allow y Deny pueden estar en los contextos directory o .htaccess
Order deny,allow
Allow from 193.147.71.0/24
Deny all
Solo pueden conectarse los clientes desde la red 193.147.71
Order allow,deny
Allow from 193.147.71.0/24
Deny all
Nadie puede conectarse
Order allow,deny
Allow from all
Deny from hackers-malvados.com
Se admiten conexiones desde cualquier cliente, excepto desde
hackers-malvados.com
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
50
La configuración por omisión es order deny,allow
Otros ejemplos:
<Directory /var/www/discosmanzana/proveedores>
order deny,allow
allow from 193.147.71.0/255.255.255.0
deny all
</Directory>
<Directory / >
Options +SymLinksIfOwnerMatch
AllowOverride None
Deny from all
</Directory>
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
51
Orden de Aplicación de las Directivas
Supongamos que
Una directiva dice que no se pueden ver los ficheros secreto.*
Otra directiva dice que sı́ se pueden ver los ficheros en mi_carpeta
¿Qué pasa con \mi_carpeta\secreto?
Es necesario conocer el orden en que se aplican las directivas. La última
aplicada es la de más peso:
1. Directory sin regexp ni comodines. .htaccess sin regexp ni comodines
2. DirectoryMatch
3. Files y FilesMatch
4. Location y LocationMatch
c
2008
GSyC
El Servidor Web Apache
Directivas de Apache (cont.)
52
Si hay una directiva para un directorio y otra para uno de sus subdirectorios, se aplica primero la del padre y luego la del hijo (prevalece
el hijo)
Si hay una directiva para un location y otra para uno de sus subdirectorios, se aplica primero la del padre y luego la del hijo (prevalece
el hijo)
En caso de empate, se aplican en el orden en que fueron declaradas
Las directivas dentro de un VirtualHost se aplican despues que las de
fuera del VirtualHost (de nuevo prevalece lo local)
c
2008
GSyC
El Servidor Web Apache

Documentos relacionados