Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Httpd Wiki" for change 
notification.

The following page has been changed by VinkoVrsalovic:
http://wiki.apache.org/httpd/sections%2exml%2ees

The comment on the change is:
Learning XSL :/

New page:
= THIS IS AN UNOFFICIAL TRANSLATION OF AN OFFICIAL DOCUMENT, FOR REVIEW 
PURPOSES ONLY =
= ESTA ES UNA TRADUCCIóN NO OFICIAL DE UN DOCUMENTO OFICIAL, ES SOLAMENTE PARA 
REVISIóN =
= THE FORMATTING IS MESSED UP WHILE I FIGURE OUT A PROPER XSL TEMPLATE TO 
OUTPUT WIKI CODE =


= Secciones de configuración =

 Las directivas en los  ["configuring.html"] ficheros de configuración pueden 
actuar sobre
el servidor completo, o pueden restringir su ámbito de actuación a 
directorios,
ficheros, hosts o URLs específicos. Este documento describe como usar secciones
de configuración o ficheros .htaccess para cambiar el ámbito de las
directivas de configuración.


 * [Tipos de contenedores de secciones de configuración]


 * [Sistema de ficheros y espacio web]


 * [Hosts virtuales]


 * [Proxy]


 * [¿Qué directivas son permitidas?]


 * [Como se mezclan las secciones]



== Tipos de contenedores de secciones de configuración ==



=== Módulos Relacionados ===
      *  [http://httpd.apache.org/docs/2.3/./mod/core.html core]  *  
[http://httpd.apache.org/docs/2.3/./mod/mod_version.html mod_version]  *  
[http://httpd.apache.org/docs/2.3/./mod/mod_proxy.htm
l mod_proxy]
=== Directivas Relacionadas ===
      *  [http://httpd.apache.org/docs/2.3/./mod/core.html#directory 
<Directory>]  *  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directorymatch 
<DirectoryMatch>]  *  [http://httpd.apache.or
g/docs/2.3/./mod/core.html#files <Files>]  *  
[http://httpd.apache.org/docs/2.3/./mod/core.html#filesmatch <FilesMatch>]  *  
[http://httpd.apache.org/docs/2.3/./mod/core.html#ifdefine <IfDefine>]
 *  [http://httpd.apache.org/docs/2.3/./mod/core.html#ifmodule <IfModule>]  *  
[http://httpd.apache.org/docs/2.3/./mod/mod_version.html#ifversion <IfVersion>] 
 *  [http://httpd.apache.org/docs/2.3
/./mod/core.html#location <Location>]  *  
[http://httpd.apache.org/docs/2.3/./mod/core.html#locationmatch 
<LocationMatch>]  *  
[http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxy <Proxy>]
  *  [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxymatch 
<ProxyMatch>]  *  [http://httpd.apache.org/docs/2.3/./mod/core.html#virtualhost 
<VirtualHost>]

Existen dos tipos base de contenedores, la mayoría de ellos son evaluados
en cada petición. Las directivas almacenadas en estos contenedores son 
solamente aplicadas
a aquellas peticiones que coincidan con las condiciones definidas en los 
contenedores. Por el contrario,
los contenedores  [http://httpd.apache.org/docs/2.3/./mod/core.html#ifdefine 
<IfDefine>] ,  [http://httpd.apache.org/docs/2.3/./mod/core.html#ifmodule 
<IfModule>] , e
 [http://httpd.apache.org/docs/2.3/./mod/mod_version.html#ifversion <IfVersion>]
son evaluados solamente al reiniciar o iniciar el servidor. Si sus condiciones 
son
ciertas al inicio, entonces las directivas almacenadas serán aplicadas a todas
las peticiones. Si las condiciones son falsas, las directivas serán ignoradas.

La directiva  [http://httpd.apache.org/docs/2.3/./mod/core.html#ifdefine 
<IfDefine>]
almacena directivas que solamente serán aplicadas si el parámetro apropiado es
especificado en la línea de comandos de httpd. Por ejemplo,
con la siguiente configuración, todas las peticiones serán redireccionadas a 
otro
sitio siempre y cuando el servidor sea iniciado usando
httpd -DHoyCerramos:


{{{

<IfDefine HoyCerramos>
Redirect / http://otherserver.example.com/
</IfDefine>


}}}


La directiva  [http://httpd.apache.org/docs/2.3/./mod/core.html#ifmodule 
<IfModule>]
es muy similar, sólo que agrupa directivas que serán aplicadas
exclusivamente si un módulo específico está disponible en el servidor.
El módulo debe estar compilado estáticamente, o bien dinámicamente y la
línea con la directiva  
[http://httpd.apache.org/docs/2.3/./mod/mod_so.html#loadmodule LoadModule]
debe estar antes en el fichero de configuración. Esta directiva debe usarse
solamente cuando es necesario que el fichero de configuración funcione de
manera independiente a los módulos instalados en el servidor. No debe usarse
para agrupar directivas que deben funcionar siempre, puesto que puede suprimir
mensajes de error sobre módulos faltantes.

En el siguiente ejemplo, la directiva  
[http://httpd.apache.org/docs/2.3/./mod/mod_mime_magic.html#mimemagicfiles 
MimeMagicFiles]  se aplicará solamente si
 [http://httpd.apache.org/docs/2.3/./mod/mod_mime_magic.html mod_mime_magic]  
está disponible.


{{{

<IfModule mod_mime_magic.c>
MimeMagicFile conf/magic
</IfModule>


}}}


La directiva  
[http://httpd.apache.org/docs/2.3/./mod/mod_version.html#ifversion <IfVersion>]
es muy similar a las directivas  
[http://httpd.apache.org/docs/2.3/./mod/core.html#ifdefine <IfDefine>]  e  
[http://httpd.apache.org/docs/2.3/./mod/core.html#ifmodule <IfModule>] , 
exceptuando que
 agrupa directivas que se aplicarán solamente
si una versión determinada del servidor se está ejecutando. Este módulo está
diseñado para el uso en conjuntos de pruebas o en grandes redes que deben 
lidiar con diferentes
versiones de httpd y diferentes configuraciones.


{{{

  <IfVersion >= 2.1>

    # esto solamente ocurre en versiones mayores que o iguales a
    # 2.1.0.

  </IfVersion>

}}}


Las directivas  [http://httpd.apache.org/docs/2.3/./mod/core.html#ifdefine 
<IfDefine>] ,
 [http://httpd.apache.org/docs/2.3/./mod/core.html#ifmodule <IfModule>] , e
 [http://httpd.apache.org/docs/2.3/./mod/mod_version.html#ifversion <IfVersion>]
pueden negar sus condiciones anteponiendo a la condición un  "!".
Además, estas secciones pueden anidarse para generar restricciones más 
complejas.

== Sistema de ficheros y espacio web ==


Los contenedores más comúnmente usados son los que cambian la configuración
del servidor para lugares determinados del sistema de ficheros o del espacio web
(esto es, URLs). En primer lugar, es importante comprender la diferencia
entre ambos. El sistema de ficheros es la manera en la que el sistema operativo
ve a los discos y su contenido. Por ejemplo, en una instalación por omisión,
Apache está en la carpeta /usr/local/apache2 en un sistema de ficheros
Unix o en "c:/Program Files/Apache Group/Apache2" en un sistema
de ficheros Windows.  (Siempre ha de usarse "/" como separador de carpetas en 
Apache,
incluso en Windows.) Por otro lado, el espacio web es la vista del sitio como lo
despacha el servidor y como es visto por los clientes. Así, el path
/dir/ en el espacio web corresponde al path
/usr/local/apache2/htdocs/dir/ en el sistema de ficheros en una instalación de
Apache por omisión en Unix. El espacio web puede no estar correlacionado 
directamente con el sistema
de ficheros, dado que las páginas pueden ser generadas dinámicamente desde 
bases de datos
u otros medios. Además, las URL pueden ser modificadas al vuelo mediante 
diversos mecanismos.


=== Contenedores del sistema de ficheros ===


Las directivas  [http://httpd.apache.org/docs/2.3/./mod/core.html#directory 
<Directory>]
y  [http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>]
, así como sus contrapartes basadas en regex
, hacen que las directivas contenidas sean aplicadas a partes del
sistema de ficheros.  Directivas contenidas en una sección  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  se 
aplican a la carpeta en el sistema
de ficheros con el nombre especificado en la directiva y también se aplican a 
todas sus subcarpetas.
El mismo efecto se obtiene usando ficheros  ["howto/htaccess.html"] .htaccess. 
Por ejemplo,
en la configuración que sigue, los índices de carpeta serán habilitados para
/var/web/dir1 y todas sus subcarpetas.


{{{

<Directory /var/web/dir1>
Options +Indexes
</Directory>


}}}


Directivas contenidas por una sección  
[http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>]  son aplicadas 
a cualquier fichero con el nombre
especificado, sin tener en cuenta la carpeta en el que éste se encuentre.
Por ejemplo, las siguientes directivas puestas en la sección principal del 
fichero
de configuración denegarán el acceso a cualquier fichero llamado privado.html
sin considerar dónde se encuentre.


{{{

<Files privado.html>
Order allow,deny
Deny from all
</Files>


}}}


Para aplicar la configuración solamente a ficheros en una parte determinada del
sistema de ficheros, las secciones
 [http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>]  y
 [http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]
pueden combinarse. Por ejemplo, la siguiente configuración denegará el acceso 
a
/var/web/dir1/privado.html, /var/web/dir1/subdir2/privado.html,
/var/web/dir1/subdir3/privado.html, y cualquier otra instancia de
privado.html bajo la carpeta /var/web/dir1/.


{{{

<Directory /var/web/dir1>
<Files privado.html>
Order allow,deny
Deny from all
</Files>
</Directory>


}}}




=== Contenedores del espacio web ===


La directiva  [http://httpd.apache.org/docs/2.3/./mod/core.html#location 
<Location>]
y su contraparte basada en regex cambian la configuración
para el contenido en el espacio web. Por ejemplo, la siguiente configuración 
previene el acceso a cualquier
URL que comience con /privado. En concreto, se aplicará a peticiones por
http://sitio.example.com/privado,
http://sitio.example.com/privado123, y por
http://sitio.example.com/privado/dir/file.html así como a cualquier
otra petición que comience con la cadena /privado.


{{{

<Location /privado>
Order Allow,Deny
Deny from all
</Location>


}}}


La directiva  [http://httpd.apache.org/docs/2.3/./mod/core.html#location 
<Location>]
no tiene porqué tener que ver con el sistema de ficheros. Por ejemplo, el 
siguiente ejemplo muestra cómo mapear
una URL determinada a un handler interno de Apache provisto por  
[http://httpd.apache.org/docs/2.3/./mod/mod_status.html mod_status] .
No necesita existir en el sistema de ficheros un fichero llamado server-status.


{{{

<Location /server-status>
SetHandler server-status
</Location>


}}}




=== Comodines y Expresiones Regulares ===


Las directivas  [http://httpd.apache.org/docs/2.3/./mod/core.html#directory 
<Directory>] ,
 [http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>] , y
 [http://httpd.apache.org/docs/2.3/./mod/core.html#location <Location>]
pueden usar comodines de línea de comando como en la función de la biblioteca
estándar de C fnmatch. El caracter "*" equivale a cualquier
secuencia de caracteres, "?" equivale a cualquier caracter y "[seq]"
equivale a cualquier caracter en seq.  El caracter "/" no será capturado por
ningún comodín, ha de ser especificado explícitamente.


Si se necesitan comparaciones aún más flexibles, cada contenedor tiene una 
contraparte
basada en expresiones regulares (regex)  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directorymatch 
<DirectoryMatch>] ,  
[http://httpd.apache.org/docs/2.3/./mod/core.html#filesmatch <FilesMa
tch>] , y  [http://httpd.apache.org/docs/2.3/./mod/core.html#locationmatch 
<LocationMatch>]  que permiten utilizar
expresiones regulares compatibles con Perl. Más adelante
se describe como cambia la forma de aplicar estas secciones cuando se utiliza 
algún contenedor basado
en regexes.

Una sección que utiliza un comodín para cambiar la configuración de todos 
las carpetas de usuario
es la que sigue:


{{{

<Directory /home/*/public_html>
Options Indexes
</Directory>


}}}


Usando secciones basadas en regexes, podemos denegar el acceso a muchos tipos 
de archivo
simultáneamente:

{{{

<FilesMatch \.(?i:gif|jpe?g|png)$>
Order allow,deny
Deny from all
</FilesMatch>






=== Qué usar cuándo ===


Escoger entre contenedores del sistema de ficheros y del espacio web es bastante
fácil. Cuando se aplican directivas a objetos que residen en el sistema de 
ficheros,
siempre se ha de utilizar  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  o  
[http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>] .  Cuando se 
aplican direct
ivas a objetos que no
residen en el sistema de ficheros, como una página creada desde una base de 
datos,
se ha de emplear  [http://httpd.apache.org/docs/2.3/./mod/core.html#location 
<Location>] .

Es importante destacar que nunca se ha de usar  
[http://httpd.apache.org/docs/2.3/./mod/core.html#location <Location>]  cuando 
se intenta restringir el acceso a objetos
en el sistema de ficheros. Esto es porque muchas URLs pueden equivaler a una 
misma
ubicación en el sistema de ficheros, de este modo inutilizando la 
restricción. Por ejemplo:


{{{

<Location /dir/>
Order allow,deny
Deny from all
</Location>


}}}


Esto funciona bien para la petición
http://yoursite.example.com/dir/.  Pero ¿qué ocurre si se está en
un sistema de ficheros que no distingue mayúsculas? En este caso la 
restricción será
fácilmente anulada mediante la petición
http://yoursite.example.com/DIR/.  La directiva  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>] , en 
cambio, se
aplicará a cualquier contenido servido desde esa ubicación especifica en el 
sistema de
ficheros, sin tener en cuenta el nombre que se le da en el espacio web (una 
excepción a esta
regla son los enlaces simbólicos, el mismo directorio puede estar en más de 
una parte
del sistema de ficheros a través de enlaces. La directiva  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  
seguirá estos enlaces sin reiniciar el nombre de la carpeta.
De este modo, para el máximo nivel de seguridad, los enlaces simbólicos han 
de deshabillitarse con la directiva
 [http://httpd.apache.org/docs/2.3/./mod/core.html#options Options]  apropiada.)

Si se piensa que nada de esto es aplicable porque el sistema de ficheros en uso 
es
sensible a mayúsculas, se ha de recordar que hay muchas otras formas de mapear 
múltiples
ubicaciones del espacio web a la misma ubicación en el sistema de ficheros.
Por lo tanto siempre se ha de utilizar contenedores del sistema de ficheros 
cuando
sea posible. Sin embargo, hay una excepción a esta regla. Poner restricciones 
de configuración en una
sección <Location/> es perfectamente seguro porque esta sección se aplicará
para todas las peticiones sin considerar la URL específica que se solicite.



== Hosts virtuales ==


El contenedor  [http://httpd.apache.org/docs/2.3/./mod/core.html#virtualhost 
<VirtualHost>]
agrupa directivas que se aplican a hosts determinados.
Esto es útil cuando se sirven múltiples hosts desde la misma máquina con una 
configuración
distinta para cada uno. Para mayor información, ver la
 ["vhosts/"] documentación de Hosts Virtuales.

== Proxy ==


Los contenedores  [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxy 
<Proxy>]
y  [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxymatch 
<ProxyMatch>]
aplican la configuración contenida solamente a los sitios accedidos a través 
de
un servidor proxy  [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html 
mod_proxy]  que coincide con la URL solicitada.
Por ejemplo, la siguiente configuración prevendrá que el servidor proxy sea 
utilizado para acceder
al sitio cnn.com.


{{{

<Proxy http://cnn.com/*>
Order allow,deny
Deny from all
</Proxy>


}}}


== ¿Qué directivas son permitidas? ==


Para averiguar qué directivas se pueden utilizar en qué secciones de
configuración, se ha de revisar el  ["mod/directive-dict.html#Context"] 
Contexto de la directiva.
Todo lo que se permite en las secciones
 [http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]
es también permitido en las secciones
 [http://httpd.apache.org/docs/2.3/./mod/core.html#directorymatch 
<DirectoryMatch>] ,
 [http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>] ,
 [http://httpd.apache.org/docs/2.3/./mod/core.html#filesmatch <FilesMatch>] ,
 [http://httpd.apache.org/docs/2.3/./mod/core.html#location <Location>] ,
 [http://httpd.apache.org/docs/2.3/./mod/core.html#locationmatch 
<LocationMatch>] ,
 [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxy <Proxy>] ,
y  [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxymatch 
<ProxyMatch>]
. Hay algunas excepciones:


La directiva  [http://httpd.apache.org/docs/2.3/./mod/core.html#allowoverride 
AllowOverride]  sólo funciona en secciones
 [http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>] .

Las  [http://httpd.apache.org/docs/2.3/./mod/core.html#options Options]  
FollowSymLinks y
SymLinksIfOwnerMatch solamente funcionan en secciones  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  o en 
ficheros
.htaccess.

La directiva  [http://httpd.apache.org/docs/2.3/./mod/core.html#options 
Options]  no se puede utilizar
en secciones  [http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>]
ni  [http://httpd.apache.org/docs/2.3/./mod/core.html#filesmatch <FilesMatch>] .


== Como se mezclan las secciones ==


Las secciones de configuración son aplicadas en un orden específico.
Dado que puede tener un efecto significativo en cómo son interpretadas las 
directivas
de configuración, es importante entender cómo funciona.

    El orden es:


A.


        [http://httpd.apache.org/docs/2.3/./mod/core.html#directory 
<Directory>]  (exceptuando expresiones regulares)
      y .htaccess simultáneamente  (con
      .htaccess teniendo preferencia sobre
       [http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>] 
)

       [http://httpd.apache.org/docs/2.3/./mod/core.html#directorymatch 
<DirectoryMatch>]
      (y <Directory ~>)

       [http://httpd.apache.org/docs/2.3/./mod/core.html#files <Files>]  y  
[http://httpd.apache.org/docs/2.3/./mod/core.html#filesmatch <FilesMatch>]  
simultáneamente

       [http://httpd.apache.org/docs/2.3/./mod/core.html#location <Location>]
      y  [http://httpd.apache.org/docs/2.3/./mod/core.html#locationmatch 
<LocationMatch>]  simultáneamente


    Aparte de  [http://httpd.apache.org/docs/2.3/./mod/core.html#directory 
<Directory>] , cada grupo es procesado en el orden en que aparece
    en los ficheros de configuración.  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  (el 
grupo 1 arriba)
    se procesa desde la porción más corta del nombre de la carpeta hasta la 
más larga.
    Por ejemplo, <Directory /var/web/dir> será procesado antes que
    <Directory /var/web/dir/subdir>.  Si múltiples secciones  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  son 
aplicables a la misma carpeta,
    éstas son procesadas en el orden en que aparecen en el fichero de 
configuración. Configuraciones
    incluídas a través de la directiva  
[http://httpd.apache.org/docs/2.3/./mod/core.html#include Include]  serán 
tratados como si estuviesen dentro del fichero que las incluye en la
    ubicación de la directiva  
[http://httpd.apache.org/docs/2.3/./mod/core.html#include Include] .

    Secciones dentro de directivas  
[http://httpd.apache.org/docs/2.3/./mod/core.html#virtualhost <VirtualHost>]  
son aplicadas
    después de las secciones correspondientes fuera de la definición del host 
virtual.
    Esto permite que los hosts virtuales puedan superseder a la configuración 
principal.

    Cuando la petición es atendida por  
[http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html mod_proxy] , el 
contenedor
     [http://httpd.apache.org/docs/2.3/./mod/mod_proxy.html#proxy <Proxy>]
    toma el lugar del contenedor  
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>]  en el 
orden de procesamiento.

    Los contenidos de las secciones posteriores superseden a los de las 
anteriores.


=== Nota Técnica ===

      Hay una secuencia que se realiza justo antes de la fase de traducción
      de nombres (donde los Aliases y DocumentRoots
      se utilizan para mapear URLs a nombres de ficheros). Los resultados de 
esta
      secuencia son descartados completamente una vez que la fase de 
traducción ha
      terminado.



=== Algunos Ejemplos ===


A continuación hay un ejemplo que pretende mostrar el orden de la mezcla. 
Asumiendo que
todos se aplican a la petición, las directivas del ejemplo se aplicarán en el 
orden A > B > C > D >
E.


{{{

<Location />
E
</Location>

<Files f.html>
D
</Files>

<VirtualHost *>
<Directory /a/b>
B
</Directory>
</VirtualHost>

<DirectoryMatch "^.*b$">
C
</DirectoryMatch>

<Directory /a/b>
A
</Directory>



}}}


Otro ejemplo, un poco más concreto. Sin considerar las restricciones de acceso
puestas en las secciones   
[http://httpd.apache.org/docs/2.3/./mod/core.html#directory <Directory>] , the 
sección  [http://httpd.apache.org/docs/2.3/./mod/core.html#location 
<Location>]  será eval
uada al último y permitirá
acceso sin restricciones al servidor. En otras palabras, el orden de la mezcla 
es importante,
así que se debe ser cuidadadoso.


{{{

<Location />
Order deny,allow
Allow from all
</Location>

# Ups!  Esta sección <Directory> no tendrá efecto
<Directory />
Order allow,deny
Allow from all
Deny from chicomalo.example.com
</Directory>


}}}

Reply via email to