| <?xml version="1.0" encoding="UTF-8" ?> |
| <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> |
| <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?> |
| <!-- English Revision: 151405:240425 (outdated) --> |
| |
| <!-- |
| Copyright 2002-2005 The Apache Software Foundation or its licensors, |
| as applicable. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <manualpage metafile="env.xml.meta"> |
| |
| <title>Variables de entorno de Apache</title> |
| |
| <summary> |
| <p>El servidor HTTP Apache HTTP ofrece un mecanismo para almacenar |
| información en variables especiales que se llaman |
| <em>variables de entorno</em>. Esta información puede ser |
| usada para controlar diversas operaciones como por ejemplo, |
| almacenar datos en ficheros de registro (log files) o controlar el |
| acceso al servidor. Las variables de entorno se usan también |
| como un mecanismo de comunicación con programas externos como |
| por ejemplo, scripts CGI. Este documento explica las diferentes |
| maneras de usar y manipular esas variables.</p> |
| |
| <p>Aunque estas variables se llaman <em>variables de entorno</em>, |
| no son iguales que las variables de entorno que controla el |
| sistema operativo de la máquina en que se está |
| ejecutando Apache. Las variables de entorno de Apache se almacenan |
| y manipulan la en estructura interna de Apache. Solamente se |
| convierten en auténticas variables de entorno del sistema |
| operativo cuando se pasan a scripts CGI o a scripts Server Side |
| Include. Si quiere manipular el entorno del sistema operativo |
| sobre el que Apache se está ejecutando, debe usar los |
| mecanismos estándar de manipulación que tenga su sistema |
| operativo.</p> |
| </summary> |
| |
| <section id="setting"> |
| <title>Especificación de variables de entorno</title> |
| <related> |
| <modulelist> |
| <module>mod_env</module> |
| <module>mod_rewrite</module> |
| <module>mod_setenvif</module> |
| <module>mod_unique_id</module> |
| </modulelist> |
| <directivelist> |
| <directive module="mod_setenvif">BrowserMatch</directive> |
| <directive module="mod_setenvif">BrowserMatchNoCase</directive> |
| <directive module="mod_env">PassEnv</directive> |
| <directive module="mod_rewrite">RewriteRule</directive> |
| <directive module="mod_env">SetEnv</directive> |
| <directive module="mod_setenvif">SetEnvIf</directive> |
| <directive module="mod_setenvif">SetEnvIfNoCase</directive> |
| <directive module="mod_env">UnsetEnv</directive> |
| </directivelist> |
| </related> |
| |
| <section id="basic-manipulation"> |
| <title>Manipulación básica del entorno</title> |
| |
| <p>El modo más básico de especificar el valor de una |
| variable de entorno en Apache es usando la directiva |
| incondicional <directive |
| module="mod_env">SetEnv</directive>. Las variables pueden |
| también pasarse desde el shell en el que se inicio Apache |
| usando la directiva <directive |
| module="mod_env">PassEnv</directive>.</p> |
| |
| </section> |
| <section id="conditional"> |
| <title>Especificación condicional por petición</title> |
| |
| <p>Si necesita más flexibilidad, las directivas incluidas |
| con mod_setenvif permiten especificar valores para las |
| variables de entorno de manera condicional en función de |
| las caracteristicas particulares de la petición que se |
| esté procesando. Por ejemplo, se puede especificar un |
| valor para una variable solamente cuando la petición se |
| haga con un navegador específico, o solamente cuando la |
| petición contenga una determinada información en su |
| cabecera. Si necesita aún más flexibilidad, puede |
| conseguirla con la directiva <directive |
| module="mod_rewrite">RewriteRule</directive> del módulo |
| mod_rewrite que tiene la opción <code>[E=...]</code> para |
| especificar valores en las variables de entorno.</p> |
| |
| </section> |
| <section id="unique-identifiers"> |
| <title>Identificadores únicos</title> |
| |
| <p>Finalmente, mod_unique_id determina el valor de la variable |
| de entorno <code>UNIQUE_ID</code> para cada |
| petición. Este valor está garantizado que sea |
| único entre todas las peticiones bajo condiciones muy |
| específicas.</p> |
| |
| </section> |
| <section id="standard-cgi"> |
| <title>Variables CGI estándar</title> |
| |
| <p>Además de todas las variables de entorno especificadas |
| en la configuración de Apache y las que se pasan desde el |
| shell, los scripts CGI y las páginas SSI tienen un |
| conjunto de variables de entorno que contienen |
| meta-información sobre la petición tal y como |
| establece la <a |
| href="http://cgi-spec.golux.com/">especificación |
| CGI</a>.</p> |
| |
| </section> |
| <section id="caveats"> |
| <title>Algunas limitaciones</title> |
| |
| <ul> |
| <li>No es posible reeemplazar los valores o cambiar las |
| variables estándar CGI usando las directivas de |
| manipulación del entorno.</li> |
| |
| <li>Cuando se usa <program>suexec</program> para |
| lanzar scripts CGI, el entorno se limpia y se queda reducido |
| a un conjunto de variables <em>seguras</em> antes de que se |
| lancen los scripts. La lista de variables <em>seguras</em> |
| se define en el momento de compilar en |
| <code>suexec.c</code>.</li> |
| |
| <li>Por razones de portabilidad, los nombres de las |
| variables de entorno solo pueden contener letras, |
| números y guiones bajos. Además, el primer |
| caracter no puede ser un número. Los caracteres que no |
| cumplan con esta restricción, se reemplazan |
| automáticamente por un guión bajo cuando se pasan |
| a scripts CGI y a páginas SSI.</li> |
| </ul> |
| </section> |
| </section> |
| <section id="using"> |
| <title>Cómo usar las variables de entorno</title> |
| |
| <related> |
| <modulelist> |
| <module>mod_access</module> |
| <module>mod_cgi</module> |
| <module>mod_ext_filter</module> |
| <module>mod_headers</module> |
| <module>mod_include</module> |
| <module>mod_log_config</module> |
| <module>mod_rewrite</module> |
| </modulelist> |
| <directivelist> |
| <directive module="mod_access">Allow</directive> |
| <directive module="mod_log_config">CustomLog</directive> |
| <directive module="mod_access">Deny</directive> |
| <directive module="mod_ext_filter">ExtFilterDefine</directive> |
| <directive module="mod_headers">Header</directive> |
| <directive module="mod_log_config">LogFormat</directive> |
| <directive module="mod_rewrite">RewriteCond</directive> |
| <directive module="mod_rewrite">RewriteRule</directive> |
| </directivelist> |
| </related> |
| |
| <section id="cgi-scripts"> |
| <title>Scripts CGI</title> |
| |
| <p>Uno de los principales usos de las variables de entorno es |
| pasar información a scripts CGI. Tal y como se explicaba |
| más arriba, el entorno que se pasa a los scripts CGI |
| incluye meta-información estándar acerca de la |
| petición además de cualquier variable especificada |
| en la configuración de Apache. Para obtener más |
| información sobre este tema consulte el <a |
| href="howto/cgi.html">tutorial sobre CGIs</a>.</p> |
| |
| </section> |
| <section id="ssi-pages"> |
| <title>Páginas SSI</title> |
| |
| <p>Los documentos procesados por el servidor con el filtro |
| <code>INCLUDES</code> perteneciente a mod_include pueden |
| imprimir las variables de entorno usando el elemento |
| <code>echo</code>, y pueden usar las variables de entorno en |
| elementos de control de flujo para dividir en partes una |
| página condicional según las características de |
| la petición. Apache también sirve páginas SSI |
| con las variables CGI estándar tal y como se explica |
| más arriba en este documento. Para obetener más |
| información, consulte el <a |
| href="howto/ssi.html">tutorial sobre SSI</a>.</p> |
| |
| </section> |
| <section id="access-control"> |
| <title>Control de acceso</title> |
| |
| <p>El acceso al servidor puede ser controlado en función |
| del valor de las variables de entorno usando las directivas |
| <code>allow from env=</code> y <code>deny from env=</code>. En |
| combinación con la directiva <directive |
| module="mod_setenvif">SetEnvIf</directive>, se puede tener un |
| control más flexible del acceso al servidor en |
| función de las características del cliente. Por |
| ejemplo, puede usar estas directivas para denegar el acceso si |
| el cliente usa un determinado navegador.</p> |
| |
| </section> |
| <section id="logging"> |
| <title>Registro condicional</title> |
| |
| <p>Los valores de las variables de entorno pueden registrarse |
| en el log de acceso usando la directiva <directive |
| module="mod_log_config">LogFormat</directive> con la |
| opción <code>%e</code>. Además, la decisión |
| sobre qué peticiones se registran puede ser tomada en |
| función del valor de las variables de entorno usando la |
| forma condicional de la directiva <directive |
| module="mod_log_config">CustomLog</directive>. En |
| combinación con <directive module="mod_setenvif" |
| >SetEnvIf</directive>, esto permite controlar de forma |
| flexible de qué peticiones se guarda registro. Por |
| ejemplo, puede elegir no registrar las peticiones que se hagan |
| a ficheros cuyo nombre termine en <code>gif</code>, o puede |
| elegir registrar únicamente las peticiones que provengan |
| de clientes que estén fuera de su propia red.</p> |
| |
| </section> |
| <section id="response-headers"> |
| <title>Cabeceras de respuesta condicionales</title> |
| |
| <p>La directiva <directive |
| module="mod_headers">Header</directive> puede utilizar la |
| presencia o ausencia de una variable de entorno para |
| determinar si una determinada cabecera HTTP se incluye en la |
| respuesta al cliente. Esto permite, por ejemplo, que una |
| determinada cabecera de respuesta sea enviada únicamente |
| si también estaba presente en la petición del |
| cliente.</p> |
| |
| </section> |
| |
| <section id="external-filter"> |
| <title>Activación de filtros externos</title> |
| |
| <p>External filters configured by <module>mod_ext_filter</module> |
| using the <directive |
| module="mod_ext_filter">ExtFilterDefine</directive> directive can |
| by activated conditional on an environment variable using the |
| <code>disableenv=</code> and <code>enableenv=</code> options.</p> |
| </section> |
| |
| <section id="url-rewriting"> |
| <title>Reescritura de URLs</title> |
| |
| <p>La expresion <code>%{ENV:...}</code> de <em>TestString</em> |
| en una directiva <directive |
| module="mod_rewrite">RewriteCond</directive> permite que el |
| motor de reescritura de mod_rewrite pueda tomar decisiones en |
| función del valor de variables de entorno. Tenga en |
| cuenta que las variables accesibles en mod_rewrite sin el |
| prefijo <code>ENV:</code> no son realmente variables de |
| entorno. En realidad, son variables especiales de mod_rewrite |
| que no pueden ser accedidas desde otros módulos.</p> |
| </section> |
| </section> |
| |
| <section id="special"> |
| <title>Variables de entorno con funciones especiales</title> |
| |
| <p>Los problemas de interoperatividad han conducido a la |
| introducción de mecanismos para modificar el |
| comportamiento de Apache cuando se comunica con determinados |
| clientes. Para hacer que esos mecanismos sean tan flexibles |
| como sea posible, se invocan definiendo variables de entorno, |
| normalmente con la directiva <directive |
| module="mod_setenvif">BrowserMatch</directive>, aunque |
| también se puede usar por ejemplo con las directivas |
| <directive module="mod_env">SetEnv</directive> y <directive |
| module="mod_env">PassEnv</directive>.</p> |
| |
| <section id="downgrade"> |
| <title>downgrade-1.0</title> |
| |
| <p>Fuerza que la petición sea tratada como una petición |
| HTTP/1.0 incluso si viene en una especificación posterior.</p> |
| |
| </section> |
| <section id="force-no-vary"> |
| <title>force-no-vary</title> |
| |
| <p>Hace que cualquier campo <code>Vary</code> se elimine de la |
| cabecera de la respuesta antes de ser enviada al |
| cliente. Algunos clientes no interpretan este campo |
| correctamente (consulte la sección sobre <a |
| href="misc/known_client_problems.html">problemas conocidos con |
| clientes</a>); usar esta variable puede evitar esos |
| problemas. Usar esta variable implica también el uso de |
| <strong>force-response-1.0</strong>.</p> |
| |
| </section> |
| <section id="force-response"> |
| <title>force-response-1.0</title> |
| |
| <p>Fuerza que la respuesta a una petición HTTP/1.0 se haga |
| también según la especificación HTTP/1.0. Esto se |
| implementó originalmente como resultado de un problema con |
| los proxies de AOL. Algunos clientes HTTP/1.0 no se comportan |
| correctamente cuando se les envía una respuesta HTTP/1.1, y |
| este mecanismo hace que se pueda interactuar con ellos.</p> |
| |
| </section> |
| |
| <section id="gzip-only-text-html"> |
| <title>gzip-only-text/html</title> |
| |
| <p>Cuando tiene valor "1", esta variable desactiva el filtro |
| de salida DEFLATE de <module>mod_deflate</module> para |
| contenidos de tipo diferentes de <code>text/html</code>.</p> |
| </section> |
| |
| <section id="no-gzip"><title>no-gzip</title> |
| |
| <p>Cuando se especifica, se desactiva el filtro |
| <code>DEFLATE</code> de <module>mod_deflate</module>.</p> |
| |
| </section> |
| |
| <section id="nokeepalive"> |
| <title>nokeepalive</title> |
| |
| <p>Desactiva <directive module="core">KeepAlive</directive>.</p> |
| |
| </section> |
| |
| <section id="prefer-language"><title>prefer-language</title> |
| |
| <p>Influye en el comportamiento de |
| <module>mod_negotiation</module>. Si contiene una etiqueta de |
| idioma (del tipo <code>en</code>, <code>ja</code> o |
| <code>x-klingon</code>), <module>mod_negotiation</module> |
| intenta que se use ese mismo idioma en la respuesta. Si no |
| está disponible ese idioma, se aplica el proceso de <a |
| href="content-negotiation.html">negociación</a> |
| normal.</p> |
| |
| </section> |
| |
| <section id="redirect-carefully"> |
| <title>redirect-carefully</title> |
| |
| <p>Fuerza que el servidor sea especialmente cuidadoso al |
| enviar una redirección al cliente. Se usa normalmente |
| cuando un cliente tiene un problema conocido tratando las |
| redirecciones. Fue implementado originalmente por el problema |
| que presentaba el software de WebFolders de Microsoft, que |
| tenía problemas interpretando redirecciones originadas |
| cuando se accedía a recursos servidos usando DAV.</p> |
| |
| </section> |
| |
| <section id="suppress-error-charset"> |
| <title>suppress-error-charset</title> |
| |
| <p><em>Disponible en las versiones de Apache 2.0.40 y posteriores</em></p> |
| |
| <p>Cuando Apache efectúa una redirección en respuesta a la |
| petición de un cliente, la respuesta incluye algún texto para que |
| se muestre en caso de que el cliente no pueda seguir (o no siga) |
| automáticamente la redirección. Apache normalmente etiqueta este |
| texto siguiendo la codificación ISO-8859-1.</p> |
| |
| <p>Sin embargo, si la redirección es a una página que |
| usa una codificación diferente, algunas versiones de |
| navegadores que no funcionan correctamente intentarán usar la |
| codificación del texto de redirección en lugar de la de |
| pagina a la que ha sido redireccionado. La consecuencia de esto |
| puede ser, por ejemplo, que una página en griego no se |
| muestre correctamente.</p> |
| |
| <p>Especificar un valor en esta variable de entorno hace que |
| Apache omita la codificación en el texto que incluye con las |
| redirecciones, y que esos navegadores que no funcionan |
| correctamente muestren correctamente la página de destino.</p> |
| |
| </section> |
| |
| </section> |
| |
| <section id="examples"> |
| <title>Ejemplos</title> |
| |
| <section id="misbehaving"> |
| <title>Cómo cambiar el comportamiento de clientes que se |
| comportan de manera inapropiada</title> |
| |
| <p>Recomendamos que incluya las siguentes líneas en el |
| fichero httpd.conf para evitar problemas conocidos</p> |
| <example><pre> |
| |
| # |
| # Las siguientes directivas modifican el comportamiento normal de las respuestas HTTP. |
| # La primera directiva desactiva keepalive para Netscape 2.x y para navegadores |
| # que la simulan. Hay problemas conocidos con esos navegadores. |
| # La segunda directiva es para Microsoft Internet Explorer 4.0b2 |
| # que tiene un fallo en la implemantación de HTTP/1.1 y no soporta |
| # keepalive adecuadamente cuando se usan respuestas 301 ó 302 (redirecciones). |
| # |
| BrowserMatch "Mozilla/2" nokeepalive |
| BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 |
| |
| # |
| # La siguiente directiva desactiva las respuestas HTTP/1.1 para navegadores que |
| # violan la especificación HTTP/1.0 @@@ by not being able to grok a |
| # basic 1.1 response @@@. |
| # |
| BrowserMatch "RealPlayer 4\.0" force-response-1.0 |
| BrowserMatch "Java/1\.0" force-response-1.0 |
| BrowserMatch "JDK/1\.0" force-response-1.0</pre></example> |
| |
| </section> |
| <section id="no-img-log"> |
| <title>No almacenar entradas en registro de acceso para las |
| imágenes</title> |
| |
| <p>Este ejemplo evita que las peticiones de imágenes |
| aparezcan en el registro de acceso. Puede ser modificada |
| fácilmente para evitar que se registren entradas de |
| peticiones de directorios, o provenientes de determinados |
| clientes.</p> |
| |
| <example><pre> |
| SetEnvIf Request_URI \.gif image-request |
| SetEnvIf Request_URI \.jpg image-request |
| SetEnvIf Request_URI \.png image-request |
| CustomLog logs/access_log common env=!image-request</pre></example> |
| |
| </section> |
| <section id="image-theft"> |
| <title>Evitar el "robo de imagenes"</title> |
| |
| <p>Este ejemplo muestra como evitar que otras webs usen las |
| imágenes de su servidor para sus páginas. Esta |
| configuración no se recomienda, pero puede funcionar en |
| determinadas circunstancias. Asumimos que que todas sus |
| imágenes están en un directorio llamado |
| /web/images.</p> |
| |
| <example><pre> |
| SetEnvIf Referer "^http://www.example.com/" local_referal |
| # Allow browsers that do not send Referer info |
| SetEnvIf Referer "^$" local_referal |
| <Directory /web/images> |
| Order Deny,Allow |
| Deny from all |
| Allow from env=local_referal |
| </Directory></pre></example> |
| |
| <p>Para obtener más información sobre esta |
| técnica, consulte el tutorial de ApacheToday " <a |
| href="http://apachetoday.com/news_story.php3?ltsn=2000-06-14-002-01-PS"> |
| Keeping Your Images from Adorning Other Sites</a>".</p> |
| </section> </section> </manualpage> |