summaryrefslogtreecommitdiff
path: root/docs/manual/env.xml.es
blob: 9ca8c8d2cc7ee60b21c9f77c4dd56b1b47d7e649 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
<?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:395235 (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&#243;n en variables especiales que se llaman
    <em>variables de entorno</em>. Esta informaci&#243;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&#233;n
    como un mecanismo de comunicaci&#243;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&#225;quina en que se est&#225;
    ejecutando Apache. Las variables de entorno de Apache se almacenan
    y manipulan la en estructura interna de Apache. Solamente se
    convierten en aut&#233;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&#225; ejecutando, debe usar los
    mecanismos est&#225;ndar de manipulaci&#243;n que tenga su sistema
    operativo.</p>
  </summary>

  <section id="setting">
    <title>Especificaci&#243;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&#243;n b&#225;sica del entorno</title>

        <p>El modo m&#225;s b&#225;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&#233;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&#243;n condicional por petici&#243;n</title>

        <p>Si necesita m&#225;s flexibilidad, las directivas incluidas
        con mod_setenvif permiten especificar valores para las
        variables de entorno de manera condicional en funci&#243;n de
        las caracteristicas particulares de la petici&#243;n que se
        est&#233; procesando. Por ejemplo, se puede especificar un
        valor para una variable solamente cuando la petici&#243;n se
        haga con un navegador espec&#237;fico, o solamente cuando la
        petici&#243;n contenga una determinada informaci&#243;n en su
        cabecera. Si necesita a&#250;n m&#225;s flexibilidad, puede
        conseguirla con la directiva <directive
        module="mod_rewrite">RewriteRule</directive> del m&#243;dulo
        mod_rewrite que tiene la opci&#243;n <code>[E=...]</code> para
        especificar valores en las variables de entorno.</p>

    </section>
    <section id="unique-identifiers">
        <title>Identificadores &#250;nicos</title>

        <p>Finalmente, mod_unique_id determina el valor de la variable
        de entorno <code>UNIQUE_ID</code> para cada
        petici&#243;n. Este valor est&#225; garantizado que sea
        &#250;nico entre todas las peticiones bajo condiciones muy
        espec&#237;ficas.</p>

    </section>
    <section id="standard-cgi">
        <title>Variables CGI est&#225;ndar</title>

        <p>Adem&#225;s de todas las variables de entorno especificadas
        en la configuraci&#243;n de Apache y las que se pasan desde el
        shell, los scripts CGI y las p&#225;ginas SSI tienen un
        conjunto de variables de entorno que contienen
        meta-informaci&#243;n sobre la petici&#243;n tal y como
        establece la <a
        href="http://cgi-spec.golux.com/">especificaci&#243;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&#225;ndar CGI usando las directivas de
          manipulaci&#243;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&#250;meros y guiones bajos. Adem&#225;s, el primer
          caracter no puede ser un n&#250;mero. Los caracteres que no
          cumplan con esta restricci&#243;n, se reemplazan
          autom&#225;ticamente por un gui&#243;n bajo cuando se pasan
          a scripts CGI y a p&#225;ginas SSI.</li>
        </ul>
    </section>
  </section>
  <section id="using">
    <title>C&#243;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&#243;n a scripts CGI. Tal y como se explicaba
        m&#225;s arriba, el entorno que se pasa a los scripts CGI
        incluye meta-informaci&#243;n est&#225;ndar acerca de la
        petici&#243;n adem&#225;s de cualquier variable especificada
        en la configuraci&#243;n de Apache. Para obtener m&#225;s
        informaci&#243;n sobre este tema consulte el <a
        href="howto/cgi.html">tutorial sobre CGIs</a>.</p>

    </section>
    <section id="ssi-pages">
        <title>P&#225;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&#225;gina condicional seg&#250;n las caracter&#237;sticas de
        la petici&#243;n. Apache tambi&#233;n sirve p&#225;ginas SSI
        con las variables CGI est&#225;ndar tal y como se explica
        m&#225;s arriba en este documento. Para obetener m&#225;s
        informaci&#243;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&#243;n
        del valor de las variables de entorno usando las directivas
        <code>allow from env=</code> y <code>deny from env=</code>. En
        combinaci&#243;n con la directiva <directive
        module="mod_setenvif">SetEnvIf</directive>, se puede tener un
        control m&#225;s flexible del acceso al servidor en
        funci&#243;n de las caracter&#237;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&#243;n <code>%e</code>. Adem&#225;s, la decisi&#243;n
        sobre qu&#233; peticiones se registran puede ser tomada en
        funci&#243;n del valor de las variables de entorno usando la
        forma condicional de la directiva <directive
        module="mod_log_config">CustomLog</directive>. En
        combinaci&#243;n con <directive module="mod_setenvif"
        >SetEnvIf</directive>, esto permite controlar de forma
        flexible de qu&#233; 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 &#250;nicamente las peticiones que provengan
        de clientes que est&#233;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 &#250;nicamente
        si tambi&#233;n estaba presente en la petici&#243;n del
        cliente.</p>

    </section>

    <section id="external-filter">
        <title>Activaci&#243;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&#243;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&#243;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&#243;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&#233;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&#243;n sea tratada como una petici&#243;n
        HTTP/1.0 incluso si viene en una especificaci&#243;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&#243;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&#233;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&#243;n HTTP/1.0 se haga
      tambi&#233;n seg&#250;n la especificaci&#243;n HTTP/1.0. Esto se
      implement&#243; originalmente como resultado de un problema con
      los proxies de AOL. Algunos clientes HTTP/1.0 no se comportan
      correctamente cuando se les env&#237;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&#225; disponible ese idioma, se aplica el proceso de <a
        href="content-negotiation.html">negociaci&#243;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&#243;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&#237;a problemas interpretando redirecciones originadas
        cuando se acced&#237;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&#250;a una redirecci&#243;n en respuesta a la
    petici&#243;n de un cliente, la respuesta incluye alg&#250;n texto para que
    se muestre en caso de que el cliente no pueda seguir (o no siga)
    autom&#225;ticamente la redirecci&#243;n. Apache normalmente etiqueta este
    texto siguiendo la codificaci&#243;n ISO-8859-1.</p> 

    <p>Sin embargo, si la redirecci&#243;n es a una p&#225;gina que
    usa una codificaci&#243;n diferente, algunas versiones de
    navegadores que no funcionan correctamente intentar&#225;n usar la
    codificaci&#243;n del texto de redirecci&#243;n en lugar de la de
    pagina a la que ha sido redireccionado. La consecuencia de esto
    puede ser, por ejemplo, que una p&#225;gina en griego no se
    muestre correctamente.</p>

    <p>Especificar un valor en esta variable de entorno hace que
    Apache omita la codificaci&#243;n en el texto que incluye con las
    redirecciones, y que esos navegadores que no funcionan
    correctamente muestren correctamente la p&#225;gina de destino.</p>

   </section>

  </section>

  <section id="examples">
    <title>Ejemplos</title>

    <section id="misbehaving">
        <title>C&#243;mo cambiar el comportamiento de clientes que se
        comportan de manera inapropiada</title>

        <p>Recomendamos que incluya las siguentes l&#237;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&#243;n de HTTP/1.1 y no soporta
# keepalive adecuadamente cuando se usan respuestas 301 &#243; 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&#243;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&#225;genes</title>

        <p>Este ejemplo evita que las peticiones de im&#225;genes
        aparezcan en el registro de acceso. Puede ser modificada
        f&#225;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&#225;genes de su servidor para sus p&#225;ginas. Esta
        configuraci&#243;n no se recomienda, pero puede funcionar en
        determinadas circunstancias. Asumimos que que todas sus
        im&#225;genes est&#225;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 
&lt;Directory  /web/images&gt; 
   Order Deny,Allow 
   Deny from all 
   Allow from env=local_referal 
&lt;/Directory&gt;</pre></example>

        <p>Para obtener m&#225;s informaci&#243;n sobre esta
        t&#233;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>