18. Apache - Tareas comunes
1.1 Establecer el directorio raíz
- El directorio raíz de un sitio web se determina mediante la directiva DocumentRoot <ruta_de_directorio> (ámbito: sv)
- Su valor predeterminado es el directorio htdocs en el directorio de instalación de Apache.
- Si la ruta de directorio no es absoluta, se toma como relativa al valor de la directiva ServerRoot (directorio de instalación de Apache)
- Es importante reflejar en el grupo Directory correspondiente cualquier modificación en el valor de esta directiva.
- Leyenda:
s: configuración de servidor
d: directory
v: servidor virtual
h: .htaccess
1.2 Directorios virtuales
- Mediante la directiva Alias ruta_URL ruta_física (ámbito: sv) podemos acceder a contenido ubicado fuera del directorio indicado en DocumentRoot. Las peticiones a la ruta URL indicada serán aplicadas al directorio físico indicado (ej: Alias /dirVirtual /www/virtual)
- Otro posible uso de esta directiva es acceder al mismo contenido mediante URLs distintas.
- La directiva AliasMatch es similar, pero emplea expresiones regulares ( Ej: AliasMatch ^/document(os|acion)(.*) /www/htdocs/documentacion$2 )
- También es posible acceder a contenido fuera del directorio indicado en DocumentRoot mediante enlaces simbólicos (si lo permite la directiva Options mediante su valor FollowSymLinks), pero se desaconseja, ya que:
- se tiene un menor control sobre estos enlaces existentes a contenido externo (no se ven reflejados en los archivos de configuración)
- no precisa establecer permisos mediante directivas Directory sobre el contenido externo.
1.3 Redirección a otro servidor
- Para redirigir al cliente a una URL distinta empleamos Redirect status ruta_URL URL_destino (ámbito: svdh)
- ruta_URL es una url absoluta con respecto al directorio raíz (comienza con /)
- URL_destino es una URL completa (http://...)
- status puede ser:
- permanent: indica que el recurso ha sido definitivamente reubicado en la nueva URL indicada.
- temp: redirección temporal (status predeterminado).
- seeother: indica que la url ya no es válida y remite a una dirección en la que poder encontrar el contenido que ha reemplazado al anterior.
- gone: indica que el recurso ha sido eliminado definitivamente.
- Podemos emplear RedirectMatch de forma análoga utilizando expresiones regulares.
Ej: RedirectMatch (.*)\.gif$ http://www.otroServidor.com$1.jpg
1.4 URLs insensibles a mayúsculas
- Mediante la directiva CheckSpellingon|off (ámbito: svdh), que se incluye en el módulo mod_speling, al activarla indicamos al servidor que antes de servir un error de “archivo no encontrado”, intente realizar comparaciones con el nombre del recurso solicitado y los existentes en el mismo directorio ignorando mayúsculas y minúsculas y permitiendo un error tipográfico (una letra omitida o de más, o 2 caracteres traspuestos).
1.5 Documento predeterminado
- Mediante DirectoryIndex documento [documento] … [documento] (ámbito: svdh) podemos especificar los nombres de los documentos predeterminados para mostrar cuando se recibe una petición que apunta a un directorio, sin especificar archivo.
1.6 Mensajes de error personalizados
- Con ErrorDocument código_de_error documento (ámbito: svdh) podemos emitir mensajes de error personalizados.
- Ejemplo:
- ErrorDocument 404 /www/errores/mapaWeb.html
- ErrorDocument 404 “Objeto no encontrado”.
1.7 Permisos de acceso al contenido
- Mediante las directivas Order, Allow y Deny (ámbito: dh) se determina el acceso al contenido según IP, nombre del host o cualquier característica del cliente capturada en variables de entorno.
- Order determina el orden en que son evaluadas las directivas:
- Order Deny,Allow indica que se evalúan primero las directivas de denegación de permisos.
- Order Allow,Deny indica que se evalúan primero las directivas de concesión de permisos.
- Allow|Deny from all|host|env=var [host|env=var]
- Ejemplo:
Allow from 192.168.1.10 Allow from 192.168 Allow from laboratorio.es |
1.8 Operaciones sobre el contenido
- Mediante la directiva Options[+|-]option [[+|-]option] ...(ámbito: svdh) definimos las operaciones permitidas sobre el contenido.
- All: (PREDETERMINADO): todas las opciones permitidas, excepto MultiViews.
- None: ninguna opción permitida.
- ExecCGI: permite la ejecución de scripts CGI.
- FollowSymLinks: Se permite seguir enlaces simbólicos.
- Includes: Se permiten las funciones Server-side includes de mod_include.
- IncludesNOEXEC: Las funciones Server-side includes están permitidas, excepto #exec cmd y #exec cgi, que están deshabilitadas.
- Indexes: Muestra un listado del contenido del directorio como respuesta a una url que apunta a un directorio sin documento predeterminado.
- MultiViews: Se permiten vistas múltiples según el contenido, a través del módulo mod_negotiation.
- SymLinksIfOwnerMatch: Se seguirán los enlaces simbólicos en los casos en los que el propietario del enlace y del destino sean el mismo.
- Si en todas las opciones utilizadas anteponemos un signo + o – (según si queremos aplicar o denegar cada opción), en lugar de sobreescribirse, las opciones se fusionarán:
|
|
Sobre /www/htdocs/dir se aplica: Includes |
Sobre /www/htdocs/dir se aplican: Includes, FollowSymLinks |
1.9 Directorios web personales
- Empleando la directiva UserDir (ámbito: sv) podemos definir directorios web para los usuarios del sistema.
- Si después de UserDir aparece:
- ruta_relativa: se asume que es relativa al directorio home de cada usuario (ej: UserDir www traduciría http://servidor/~usuario/archivo.html a /home/usuario/www/archivo.html
- ruta_absoluta: se busca un directorio con el nombre del usuario en esa ruta (ej: UserDir /www/usuarios traduciría http://servidor/~usuario/archivo.html a /www/usuarios/usuario/archivo.html
- ruta_absoluta con *: se traduce el * por el nombre del usuario (ej: UserDir /www/usuarios/*/htdocs traduciría http://servidor/~usuario/archivo.html a /www/usuarios/usuario/htdocs/archivo.html
- Se pueden restringir los usuarios afectados por esta directiva:
- UserDir disabled: deshabilita todas las traducciones de nombre de usuario a directorio excepto para aquellos usuarios explícitamente mencionados en UserDir enabled.
- UserDir disabled <usuario> [<usuario>] … [<usuario>]: los usuarios que aparezcan en esta lista nunca tendrán traducción a directorio, aunque aparezcan en UserDir enabled.
- UserDir enabled <usuario> [<usuario>] … [<usuario>]: los usuarios que aparezcan en esta lista tendrán traducción a directorio aunque un UserDir disable global esté en vigor, pero no si aparecen explícitamente en una lista de UserDir disabled.