]> granicus.if.org Git - apache/blob - docs/manual/howto/reverse_proxy.html.es.utf8
move es and fr targets to *.utf8 extension. Update transformation
[apache] / docs / manual / howto / reverse_proxy.html.es.utf8
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>Guía de Proxy Inverso - Servidor HTTP Apache Versión 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body id="manual-page"><div id="page-header">
19 <p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
20 <p class="apache">Versión 2.5 del Servidor HTTP Apache</p>
21 <img alt="" src="../images/feather.png" /></div>
22 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
23 <div id="path">
24 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentación</a> &gt; <a href="../">Versión 2.5</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Guía de Proxy Inverso</h1>
25 <div class="toplang">
26 <p><span>Idiomas disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27 <a href="../es/howto/reverse_proxy.html" title="Español">&nbsp;es&nbsp;</a> |
28 <a href="../fr/howto/reverse_proxy.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a></p>
29 </div>
30 <div class="outofdate">Esta traducción podría estar
31             obsoleta. Consulte la versión en inglés de la
32             documentación para comprobar si se han producido cambios
33             recientemente.</div>
34
35     <p>Además de ser un servidor web "básico", y proveer contenido estático y 
36       dinámico a los usuarios finales, Apache HTTPD (al igual que la mayoría de  
37       servidores http) puede también actuar como proxy inverso, también conocido 
38       como "servidor de paso" o gateway.
39     </p>
40
41     <p>En tales escenarios, el propio httpd no genera contenido o aloja datos,
42       en su lugar el contenido se obtiene de uno o varios servidores backend, que 
43       normalmente no tienen conexión directa con redes externas. Cuando httpd 
44       recibe una petición de un cliente, se hace <em>proxy</em> de esta petición 
45       a uno de estos servidores backend, que gestiona la petición, genera el 
46       contenido y entonces envía este contenido de vuelta a httpd, que 
47       entonces genera la respuesta HTTP definitiva que se envía de vuelta al cliente.
48     </p>
49
50     <p>Existen muchas razones para usar esta implementación, pero generalmente 
51       las razones típicas se deben a seguridad, alta disponibilidad, balanceo 
52       de carga, y centralización de autenticación/autorización. Es crítico en 
53       estas implementaciones que la arquitectura y el diseño de la infraestructura 
54       de los backend (esos servidores que son los que acaban gestionando las peticiones) 
55       estén aislados y protegidos del exterior; en cuanto al cliente se refiere, 
56       el proxy inverso <em>és</em> la única fuente de todo el contenido.</p>
57
58     <p>Ejemplo de implementación típica:</p>
59     <p class="centered"><img src="../images/reverse-proxy-arch.png" alt="reverse-proxy-arch" /></p>
60
61   </div>
62 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Proxy Inverso</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#simple">Proxy inverso sencillo</a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#cluster">Clusters y Balanceadores</a></li>
65 <li><img alt="" src="../images/down.gif" /> <a href="#config">Configuración de Balanceador y BalancerMember</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#failover">Tolerancia a fallos</a></li>
67 <li><img alt="" src="../images/down.gif" /> <a href="#manager">Gestor del Balanceador</a></li>
68 <li><img alt="" src="../images/down.gif" /> <a href="#health-check">Comprobaciones de estado dinámicas</a></li>
69 <li><img alt="" src="../images/down.gif" /> <a href="#status">Marcas de estado de los Miembros del Balanceador</a></li>
70 </ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
71 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
72 <div class="section">
73 <h2><a name="related" id="related">Proxy Inverso</a><a title="Enlace permanente" href="#related" class="permalink">&para;</a></h2>
74   
75   <table class="related"><tr><th>Módulos Relacionados</th><th>Directivas Relacionadas</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li><li><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></li><li><code class="module"><a href="../mod/mod_proxy_hcheck.html">mod_proxy_hcheck</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code></li><li><code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code></li></ul></td></tr></table>
76   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
77 <div class="section">
78 <h2><a name="simple" id="simple">Proxy inverso sencillo</a><a title="Enlace permanente" href="#simple" class="permalink">&para;</a></h2>
79     
80
81     <p>
82       La directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>
83       especifica el mapeo de peticiones entrantes al servidor backend (o un cluster 
84       de servidores conocido como grupo de <code>Balanceo</code>). El ejemplo 
85       más sencillo hace proxy de todas las solicitudes (<code>"/"</code>) a un solo backend:
86     </p>
87
88     <pre class="prettyprint lang-config">ProxyPass "/"  "http://www.example.com/"</pre>
89
90
91     <p>
92       Para asegurarse de ello y que las cabeceras <code>Location:</code> 
93       generadas en el backend se modifican para apuntar al proxy inverso, 
94       en lugar del propio backend, la directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">
95       ProxyPassReverse</a></code> suele ser necesaria a menudo:
96     </p>
97
98     <pre class="prettyprint lang-config">ProxyPass "/"  "http://www.example.com/"
99 ProxyPassReverse "/"  "http://www.example.com/"</pre>
100
101
102     <p>Sólo se hará proxy de ciertas URIs, como se muestra en este ejemplo:</p>
103
104     <pre class="prettyprint lang-config">ProxyPass "/images/"  "http://www.example.com/"
105 ProxyPassReverse "/images/"  "http://www.example.com/"</pre>
106
107
108     <p>En este ejemplo, se hará proxy al backend especificado,
109     de cualquier solicitud que comience con la ruta <code>/images/</code>, si 
110     no se gestionarán localmente.
111     </p>
112   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
113 <div class="section">
114 <h2><a name="cluster" id="cluster">Clusters y Balanceadores</a><a title="Enlace permanente" href="#cluster" class="permalink">&para;</a></h2>
115     
116
117     <p>
118       Aunque los ejemplos de más arriba son útiles, tienen la deficiencia en la 
119       que si el backend se cae, o recibe mucha carga, hacer proxy de esas solicitudes 
120       no aporta grandes beneficios. Lo que se necesita es la habilidad de definir un 
121       grupo de servidores backend que puedan gestionar esas peticiones y que el proxy 
122       inverso pueda balancear la carga y aplicar la tolerancia a fallos entre los backend. 
123       A veces a este grupo se le llama <em>cluster</em>, pero el término para Apache httpd
124       es <em>balanceador</em>. Se puede definir un balanceador usando las directivas
125       <code class="directive"><a href="../mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> and
126       <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> como se muestra 
127       a continuación:
128     </p>
129
130     <pre class="prettyprint lang-config">&lt;Proxy balancer://myset&gt;
131     BalancerMember http://www2.example.com:8080
132     BalancerMember http://www3.example.com:8080
133     ProxySet lbmethod=bytraffic
134 &lt;/Proxy&gt;
135
136 ProxyPass "/images/"  "balancer://myset/"
137 ProxyPassReverse "/images/"  "balancer://myset/"</pre>
138
139
140     <p>
141       El esquema <code>balancer://</code> es lo que le dice a httpd que estamos 
142       generando un grupo de balanceo, con el nombre <em>myset</em>. Incluye 2 
143       servidores backend, que httpd llama <em>BalancerMember</em>. En este caso, 
144       se hará proxy inverso de cualquier petición para <code>/images/</code> 
145       hacia <em>uno</em> de los dos backend.
146       La directiva <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> especifica que 
147       el Balanceador <em>myset</em> usa un algoritmo que balancea basado en los 
148       bytes de entrada/salida (I/O).
149     </p>
150
151     <div class="note"><h3>Información adicional</h3>
152       <p>
153         También se refiere a los Miembros del Balanceador <em>BalancerMember</em> 
154         como <em>workers</em> (trabajadores).
155       </p>
156    </div>
157
158   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
159 <div class="section">
160 <h2><a name="config" id="config">Configuración de Balanceador y BalancerMember</a><a title="Enlace permanente" href="#config" class="permalink">&para;</a></h2>
161     
162
163     <p>
164       Puede ajustar numerosos parámetros de los <em>balanceadores</em>
165       y los <em>workers</em> definiéndolos a través de la directiva
166       <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. Por ejemplo,
167       asumiendo que quisiéramos que <code>http://www3.example.com:8080</code> gestionara 
168       3 veces más tráfico con un "timeout" de 1 segundo, ajustaríamos la configuración como sigue:
169     </p>
170
171     <pre class="prettyprint lang-config">&lt;Proxy balancer://myset&gt;
172     BalancerMember http://www2.example.com:8080
173     BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
174     ProxySet lbmethod=bytraffic
175 &lt;/Proxy&gt;
176
177 ProxyPass "/images/"  "balancer://myset/"
178 ProxyPassReverse "/images/"  "balancer://myset/"</pre>
179
180
181   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
182 <div class="section">
183 <h2><a name="failover" id="failover">Tolerancia a fallos</a><a title="Enlace permanente" href="#failover" class="permalink">&para;</a></h2>
184     
185
186     <p>
187       Puede también ajustar varios escenarios de tolerancia a fallos, detallando 
188       qué workers, e incluso balanceadores, deberían usarse en tales casos. 
189       Por ejemplo, la siguiente configuración implementa dos casos de tolerancia 
190       a fallos: En el primero, sólo se envía tráfico a 
191       <code>http://hstandby.example.com:8080</code> si todos los demás workers en 
192       el balanceador <em>myset</em> no están disponibles. Si ese worker tampoco está 
193       disponible, sólo entonces los workers de <code>http://bkup1.example.com:8080</code> 
194       y <code>http://bkup2.example.com:8080</code> serán incluidos en la rotación:
195     </p>
196
197     <pre class="prettyprint lang-config">&lt;Proxy balancer://myset&gt;
198     BalancerMember http://www2.example.com:8080
199     BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
200     BalancerMember http://hstandby.example.com:8080 status=+H
201     BalancerMember http://bkup1.example.com:8080 lbset=1
202     BalancerMember http://bkup2.example.com:8080 lbset=1
203     ProxySet lbmethod=byrequests
204 &lt;/Proxy&gt;
205
206 ProxyPass "/images/"  "balancer://myset/"
207 ProxyPassReverse "/images/"  "balancer://myset/"</pre>
208
209
210     <p>
211       La "magia" de ésta configuración de tolerancia a fallos es configurar 
212       <code>http://hstandby.example.com:8080</code> con la marca de estado 
213       <code>+H</code>, que lo pone en modo <em>hot standby</em> (en reserva), 
214       y hacen que los 2 servidores <code>bkup#</code> sean parte del set nº 1 del balanceo de carga (el valor por defecto es 0); para tolerancia a fallos, los "hot standby" (si existen) se usan primero cuando todos los workers estándar no están disponibles; los set de balanceo con el número inferior se intentan usar siempre primero.
215     </p>
216
217   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
218 <div class="section">
219 <h2><a name="manager" id="manager">Gestor del Balanceador</a><a title="Enlace permanente" href="#manager" class="permalink">&para;</a></h2>
220     
221
222     <p>
223       Una de las características más útiles y única del proxy inverso de Apache 
224       httpd es la aplicación embebida <em>balancer-manager</em> (gestor de balanceo). 
225       wSimilar a <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>, <em>balancer-manager</em> muestra
226       la configuración actual que está funcionando, el estado de los balanceadores 
227       activados y workers que están en uso en ese momento. Aun así, no sólo muestra 
228       estos parámetros, también permite reconfiguración dinámica, en tiempo real, de 
229       prácticamente todos ellos, incluido añadir nuevos <em>BalancerMember</em> (workers) 
230       a un balanceo existente. Para activar esta prestación, se tiene que añadir lo siguiente a la configuración:
231     </p>
232
233     <pre class="prettyprint lang-config">&lt;Location "/balancer-manager"&gt;
234     SetHandler balancer-manager
235     Require host localhost
236 &lt;/Location&gt;</pre>
237
238
239     <div class="warning"><h3>Atención</h3>
240       <p>No active el <em>balancer-manager</em> hasta que haya <a href="../mod/mod_proxy.html#access">securizado su servidor</a>. En particular, 
241       asegúrese de que el acceso a ésta URL (la de configuración del balanceador) 
242       esté altamente restringido.</p>
243     </div>
244
245     <p>
246       Cuando se accede al proxy inverso en la url
247       (p.e: <code>http://rproxy.example.com/balancer-manager/</code>, verá una 
248       página similar a la siguiente:
249     </p>
250     <p class="centered"><img src="../images/bal-man.png" alt="balancer-manager page" /></p>
251
252     <p>
253       Este formulario permite al administrador ajustar varios parámetros, desactivar 
254       workers, cambiar los métodos de balanceo de carga y añadir nuevos workers. 
255       Por ejemplo, haciendo clic en el balanceador, verá la siguiente página:
256     </p>
257     <p class="centered"><img src="../images/bal-man-b.png" alt="balancer-manager page" /></p>
258
259     <p>
260       Y haciendo clic en el worker, mostrará esta página:
261     </p>
262     <p class="centered"><img src="../images/bal-man-w.png" alt="balancer-manager page" /></p>
263
264     <p>
265       Para hacer que estos cambios sean persistentes en los reinicios del proxy 
266       inverso, asegúrese de que <code class="directive"><a href="../mod/mod_proxy.html#balancerpersist">BalancerPersist</a></code> está activado.
267     </p>
268
269   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
270 <div class="section">
271 <h2><a name="health-check" id="health-check">Comprobaciones de estado dinámicas</a><a title="Enlace permanente" href="#health-check" class="permalink">&para;</a></h2>
272     
273
274     <p>
275       Antes de que httpd haga proxy de una petición a un worker, puede <em>"comprobar"</em> 
276       si ese worker está disponible mediante el parámetro de configuración <code>ping</code> 
277       para ese worker usando <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. 
278       A menudo es más útil comprobar el estado de los workers <em>no disponibles</em>, 
279       con un método dinámico. Esto se consigue con el módulo <code class="module"><a href="../mod/mod_proxy_hcheck.html">mod_proxy_hcheck</a></code>.
280     </p>
281
282   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
283 <div class="section">
284 <h2><a name="status" id="status">Marcas de estado de los Miembros del Balanceador</a><a title="Enlace permanente" href="#status" class="permalink">&para;</a></h2>
285     
286
287     <p>
288       En el <em>balancer-manager</em> el estado actual, o <em>status</em>, de un worker 
289       se muestra y puede ser configurado/reseteado. El significado de estos estados es el siguiente:
290     </p>
291       <table class="bordered">
292         <tr><th>Marca</th><th>Cadena</th><th>Descripción</th></tr>
293         <tr><td>&nbsp;</td><td><em>Ok</em></td><td>El Worker está disponible</td></tr>
294         <tr><td>&nbsp;</td><td><em>Init</em></td><td>El Worker ha sido inicializado</td></tr>
295         <tr><td><code>D</code></td><td><em>Dis</em></td><td>El Worker está 
296         desactivado y no aceptará peticiones; se intentará reutilizar automáticamente.</td></tr>
297         <tr><td><code>S</code></td><td><em>Stop</em></td><td>El Worker ha sido desactivado por el 
298         administrador; no aceptará peticiones y no se reintentará utilizar automáticamente</td></tr>
299         <tr><td><code>I</code></td><td><em>Ign</em></td><td>El Worker está en modo "ignore-errors" (obviar-errores) y estará siempre en modo disponible.</td></tr>
300         <tr><td><code>H</code></td><td><em>Stby</em></td><td>El Worker está en modo "hot-standby" y sólo se usará si no hay otros workers disponibles.</td></tr>
301         <tr><td><code>E</code></td><td><em>Err</em></td><td>El Worker está en estado de error, 
302         generalmente debido a fallos de comprobación antes de enviar peticiones; no se hará 
303         proxy de peticiones a este worker, pero se reintentará el uso de este worker 
304         dependiendo de la configuración del parámetro <code>retry</code>.</td></tr>
305         <tr><td><code>N</code></td><td><em>Drn</em></td><td>El Worker está en modo vaciado y sólo aceptará 
306         sesiones activas previamente destinadas a él mismo y obviará el resto de peticiones.</td></tr>
307         <tr><td><code>C</code></td><td><em>HcFl</em></td><td>La comprobación dinámica del estado del Worker
308         ha fallado y no se usará hasta que pase las comprobaciones de estado posteriores.</td></tr>
309       </table>
310   </div></div>
311 <div class="bottomlang">
312 <p><span>Idiomas disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
313 <a href="../es/howto/reverse_proxy.html" title="Español">&nbsp;es&nbsp;</a> |
314 <a href="../fr/howto/reverse_proxy.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a></p>
315 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
316 <script type="text/javascript"><!--//--><![CDATA[//><!--
317 var comments_shortname = 'httpd';
318 var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/reverse_proxy.html';
319 (function(w, d) {
320     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
321         d.write('<div id="comments_thread"><\/div>');
322         var s = d.createElement('script');
323         s.type = 'text/javascript';
324         s.async = true;
325         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
326         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
327     }
328     else {
329         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
330     }
331 })(window, document);
332 //--><!]]></script></div><div id="footer">
333 <p class="apache">Copyright 2018 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
334 <p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
335 if (typeof(prettyPrint) !== 'undefined') {
336     prettyPrint();
337 }
338 //--><!]]></script>
339 </body></html>