-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>\r
-<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- -->\r
-<title>Guía de Proxy Inverso - Servidor HTTP Apache Versión 2.5</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<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" />\r
-<script src="../style/scripts/prettify.min.js" type="text/javascript">\r
-</script>\r
-\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<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>\r
-<p class="apache">Versión 2.5 del Servidor HTTP Apache</p>\r
-<img alt="" src="../images/feather.png" /></div>\r
-<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Guía de Proxy Inverso</h1>\r
-<div class="toplang">\r
-<p><span>Idiomas disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> |\r
-<a href="../es/howto/reverse_proxy.html" title="Español"> es </a></p>\r
-</div>\r
-\r
- <p>Además de ser un servidor web "básico", y proveer contenido estático y \r
- dinámico a los usuarios finales, Apache HTTPD (al igual que la mayoría de \r
- servidores http) puede también actuar como proxy inverso, también conocido \r
- como "servidor de paso" o gateway.\r
- </p>\r
-\r
- <p>En tales escenarios, el propio httpd no genera contenido o aloja datos,\r
- en su lugar el contenido se obtiene de uno o varios servidores backend, que \r
- normalmente no tienen conexión directa con redes externas. Cuando httpd \r
- recibe una petición de un cliente, se hace <em>proxy</em> de esta petición \r
- a uno de estos servidores backend, que gestiona la petición, genera el \r
- contenido y entonces envía este contenido de vuelta a httpd, que \r
- entonces genera la respuesta HTTP definitiva que se envía de vuelta al cliente.\r
- </p>\r
-\r
- <p>Existen muchas razones para usar esta implementación, pero generalmente \r
- las razones típicas se deben a seguridad, alta disponibilidad, balanceo \r
- de carga, y centralización de autenticación/autorización. Es crítico en \r
- estas implementaciones que la arquitectura y el diseño de la infraestructura \r
- de los backend (esos servidores que son los que acaban gestionando las peticiones) \r
- estén aislados y protegidos del exterior; en cuanto al cliente se refiere, \r
- el proxy inverso <em>és</em> la única fuente de todo el contenido.</p>\r
-\r
- <p>Ejemplo de implementación típica:</p>\r
- <p class="centered"><img src="../images/reverse-proxy-arch.png" alt="reverse-proxy-arch" /></p>\r
-\r
- </div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Proxy Inverso</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#simple">Proxy inverso sencillo</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#cluster">Clusters y Balanceadores</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#config">Configuración de Balanceador y BalancerMember</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#failover">Tolerancia a fallos</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#manager">Gestor del Balanceador</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#health-check">Comprobaciones de estado dinámicas</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#status">Marcas de estado de los Miembros del Balanceador</a></li>\r
-</ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="related" id="related">Proxy Inverso</a></h2>\r
- \r
- <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>\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="simple" id="simple">Proxy inverso sencillo</a></h2>\r
- \r
-\r
- <p>\r
- La directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>\r
- especifica el mapeo de peticiones entrantes al servidor backend (o un cluster \r
- de servidores conocido como grupo de <code>Balanceo</code>). El ejemplo \r
- más sencillo hace proxy de todas las solicitudes (<code>"/"</code>) a un solo backend:\r
- </p>\r
-\r
- <pre class="prettyprint lang-config">ProxyPass "/" "http://www.example.com/"</pre>\r
-\r
-\r
- <p>\r
- Para asegurarse de ello y que las cabeceras <code>Location:</code> \r
- generadas en el backend se modifican para apuntar al proxy inverso, \r
- en lugar del propio backend, la directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">\r
- ProxyPassReverse</a></code> suele ser necesaria a menudo:\r
- </p>\r
-\r
- <pre class="prettyprint lang-config">ProxyPass "/" "http://www.example.com/"\r
-ProxyPassReverse "/" "http://www.example.com/"</pre>\r
-\r
-\r
- <p>Sólo se hará proxy de ciertas URIs, como se muestra en este ejemplo:</p>\r
-\r
- <pre class="prettyprint lang-config">ProxyPass "/images/" "http://www.example.com/"\r
-ProxyPassReverse "/images/" "http://www.example.com/"</pre>\r
-\r
-\r
- <p>En este ejemplo, se hará proxy al backend especificado,\r
- de cualquier solicitud que comience con la ruta <code>/images/</code>, si \r
- no se gestionarán localmente.\r
- </p>\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="cluster" id="cluster">Clusters y Balanceadores</a></h2>\r
- \r
-\r
- <p>\r
- Aunque los ejemplos de más arriba son útiles, tienen la deficiencia en la \r
- que si el backend se cae, o recibe mucha carga, hacer proxy de esas solicitudes \r
- no aporta grandes beneficios. Lo que se necesita es la habilidad de definir un \r
- grupo de servidores backend que puedan gestionar esas peticiones y que el proxy \r
- inverso pueda balancear la carga y aplicar la tolerancia a fallos entre los backend. \r
- A veces a este grupo se le llama <em>cluster</em>, pero el término para Apache httpd\r
- es <em>balanceador</em>. Se puede definir un balanceador usando las directivas\r
- <code class="directive"><a href="../mod/mod_proxy.html#proxy"><Proxy></a></code> and\r
- <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> como se muestra \r
- a continuación:\r
- </p>\r
-\r
- <pre class="prettyprint lang-config"><Proxy balancer://myset>\r
- BalancerMember http://www2.example.com:8080\r
- BalancerMember http://www3.example.com:8080\r
- ProxySet lbmethod=bytraffic\r
-</Proxy>\r
-\r
-ProxyPass "/images/" "balancer://myset/"\r
-ProxyPassReverse "/images/" "balancer://myset/"</pre>\r
-\r
-\r
- <p>\r
- El esquema <code>balancer://</code> es lo que le dice a httpd que estamos \r
- generando un grupo de balanceo, con el nombre <em>myset</em>. Incluye 2 \r
- servidores backend, que httpd llama <em>BalancerMember</em>. En este caso, \r
- se hará proxy inverso de cualquier petición para <code>/images/</code> \r
- hacia <em>uno</em> de los dos backend.\r
- La directiva <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> especifica que \r
- el Balanceador <em>myset</em> usa un algoritmo que balancea basado en los \r
- bytes de entrada/salida (I/O).\r
- </p>\r
-\r
- <div class="note"><h3>Información adicional</h3>\r
- <p>\r
- También se refiere a los Miembros del Balanceador <em>BalancerMember</em> \r
- como <em>workers</em> (trabajadores).\r
- </p>\r
- </div>\r
-\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="config" id="config">Configuración de Balanceador y BalancerMember</a></h2>\r
- \r
-\r
- <p>\r
- Puede ajustar numerosos parámetros de los <em>balanceadores</em>\r
- y los <em>workers</em> definiéndolos a través de la directiva\r
- <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. Por ejemplo,\r
- asumiendo que quisiéramos que <code>http://www3.example.com:8080</code> gestionara \r
- 3 veces más tráfico con un "timeout" de 1 segundo, ajustaríamos la configuración como sigue:\r
- </p>\r
-\r
- <pre class="prettyprint lang-config"><Proxy balancer://myset>\r
- BalancerMember http://www2.example.com:8080\r
- BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1\r
- ProxySet lbmethod=bytraffic\r
-</Proxy>\r
-\r
-ProxyPass "/images/" "balancer://myset/"\r
-ProxyPassReverse "/images/" "balancer://myset/"</pre>\r
-\r
-\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="failover" id="failover">Tolerancia a fallos</a></h2>\r
- \r
-\r
- <p>\r
- Puede también ajustar varios escenarios de tolerancia a fallos, detallando \r
- qué workers, e incluso balanceadores, deberían usarse en tales casos. \r
- Por ejemplo, la siguiente configuración implementa dos casos de tolerancia \r
- a fallos: En el primero, sólo se envía tráfico a \r
- <code>http://hstandby.example.com:8080</code> si todos los demás workers en \r
- el balanceador <em>myset</em> no están disponibles. Si ese worker tampoco está \r
- disponible, sólo entonces los workers de <code>http://bkup1.example.com:8080</code> \r
- y <code>http://bkup2.example.com:8080</code> serán incluidos en la rotación:\r
- </p>\r
-\r
- <pre class="prettyprint lang-config"><Proxy balancer://myset>\r
- BalancerMember http://www2.example.com:8080\r
- BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1\r
- BalancerMember http://hstandby.example.com:8080 status=+H\r
- BalancerMember http://bkup1.example.com:8080 lbset=1\r
- BalancerMember http://bkup2.example.com:8080 lbset=1\r
- ProxySet lbmethod=byrequests\r
-</Proxy>\r
-\r
-ProxyPass "/images/" "balancer://myset/"\r
-ProxyPassReverse "/images/" "balancer://myset/"</pre>\r
-\r
-\r
- <p>\r
- La "magia" de ésta configuración de tolerancia a fallos es configurar \r
- <code>http://hstandby.example.com:8080</code> con la marca de estado \r
- <code>+H</code>, que lo pone en modo <em>hot standby</em> (en reserva), \r
- y hacen que los dos servidores <code>bkup#</code> sean parte del set nº 1 del\r
- 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 activos no están disponibles; los set de balanceo con números inferiores se usan siempre primero.\r
- </p>\r
-\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="manager" id="manager">Gestor del Balanceador</a></h2>\r
- \r
-\r
- <p>\r
- Una de las características más útiles y única del proxy inverso de Apache \r
- httpd es la aplicación embebida <em>balancer-manager</em> (gestor de balanceo). \r
- wSimilar a <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>, <em>balancer-manager</em> muestra\r
- la configuración actual que está funcionando, el estado de los balanceadores \r
- activados y workers que están en uso en ese momento. Aun así, no sólo muestra \r
- estos parámetros, también permite reconfiguración dinámica, en tiempo real, de \r
- prácticamente todos ellos, incluido añadir nuevos <em>BalancerMember</em> (workers) \r
- a un balanceo existente. Para activar esta prestación, se tiene que añadir lo siguiente a la configuración:\r
- </p>\r
-\r
- <pre class="prettyprint lang-config"><Location "/balancer-manager">\r
- SetHandler balancer-manager\r
- Require host localhost\r
-</Location></pre>\r
-\r
-\r
- <div class="warning"><h3>Atención</h3>\r
- <p>No active el <em>balancer-manager</em> hasta que haya <a href="../mod/mod_proxy.html#access">securizado su servidor</a>. En particular, \r
- asegúrese de que el acceso a ésta URL (la de configuración del balanceador) \r
- esté altamente restringido.</p>\r
- </div>\r
-\r
- <p>\r
- Cuando se accede al proxy inverso en la url\r
- (p.e: <code>http://rproxy.example.com/balancer-manager/</code>, verá una \r
- página similar a la siguiente:\r
- </p>\r
- <p class="centered"><img src="../images/bal-man.png" alt="balancer-manager page" /></p>\r
-\r
- <p>\r
- Este formulario permite al administrador ajustar varios parámetros, desactivar \r
- workers, cambiar los métodos de balanceo de carga y añadir nuevos workers. \r
- Por ejemplo, haciendo clic en el balanceador, verá la siguiente página:\r
- </p>\r
- <p class="centered"><img src="../images/bal-man-b.png" alt="balancer-manager page" /></p>\r
-\r
- <p>\r
- Y haciendo clic en el worker, mostrará esta página:\r
- </p>\r
- <p class="centered"><img src="../images/bal-man-w.png" alt="balancer-manager page" /></p>\r
-\r
- <p>\r
- Para hacer que estos cambios sean persistentes en los reinicios del proxy \r
- inverso, asegúrese de que <code class="directive"><a href="../mod/mod_proxy.html#balancerpersist">BalancerPersist</a></code> está activado.\r
- </p>\r
-\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="health-check" id="health-check">Comprobaciones de estado dinámicas</a></h2>\r
- \r
-\r
- <p>\r
- Antes de que httpd haga proxy de una petición a un worker, puede <em>"comprobar"</em> \r
- si ese worker está disponible mediante el parámetro de configuración <code>ping</code> \r
- para ese worker usando <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. \r
- A menudo es más útil comprobar el estado de los workers <em>no disponibles</em>, \r
- 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>.\r
- </p>\r
-\r
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="status" id="status">Marcas de estado de los Miembros del Balanceador</a></h2>\r
- \r
-\r
- <p>\r
- En el <em>balancer-manager</em> el estado actual, o <em>status</em>, de un worker \r
- se muestra y puede ser configurado/reseteado. El significado de estos estados es el siguiente:\r
- </p>\r
- <table class="bordered">\r
- <tr><th>Marca</th><th>Cadena</th><th>Descripción</th></tr>\r
- <tr><td> </td><td><em>Ok</em></td><td>El Worker está disponible</td></tr>\r
- <tr><td> </td><td><em>Init</em></td><td>El Worker ha sido inicializado</td></tr>\r
- <tr><td><code>D</code></td><td><em>Dis</em></td><td>El Worker está \r
- desactivado y no aceptará peticiones; se intentará reutilizar automáticamente.</td></tr>\r
- <tr><td><code>S</code></td><td><em>Stop</em></td><td>El Worker ha sido desactivado por el \r
- administrador; no aceptará peticiones y no se reintentará utilizar automáticamente</td></tr>\r
- <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>\r
- <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>\r
- <tr><td><code>E</code></td><td><em>Err</em></td><td>El Worker está en estado de error, \r
- generalmente debido a fallos de comprobación antes de enviar peticiones; no se hará \r
- proxy de peticiones a este worker, pero se reintentará el uso de este worker \r
- dependiendo de la configuración del parámetro <code>retry</code>.</td></tr>\r
- <tr><td><code>N</code></td><td><em>Drn</em></td><td>El Worker está en modo vaciado y sólo aceptará \r
- sesiones activas previamente destinadas a él mismo y obviará el resto de peticiones.</td></tr>\r
- <tr><td><code>C</code></td><td><em>HcFl</em></td><td>La comprobación dinámica del estado del Worker\r
- ha fallado y no se usará hasta que pase las comprobaciones de estado posteriores.</td></tr>\r
- </table>\r
- </div></div>\r
-<div class="bottomlang">\r
-<p><span>Idiomas disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> |\r
-<a href="../es/howto/reverse_proxy.html" title="Español"> es </a></p>\r
-</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&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>\r
+ -->
+<title>Guía de Proxy Inverso - Servidor HTTP Apache Versión 2.5</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<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" />
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
+</script>
+
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<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>
+<p class="apache">Versión 2.5 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.png" /></div>
+<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Guía de Proxy Inverso</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/reverse_proxy.html" title="Español"> es </a></p>
+</div>
+<div class="outofdate">Esta traducción podría estar
+ obsoleta. Consulte la versión en inglés de la
+ documentación para comprobar si se han producido cambios
+ recientemente.</div>
+
+ <p>Además de ser un servidor web "básico", y proveer contenido estático y
+ dinámico a los usuarios finales, Apache HTTPD (al igual que la mayoría de
+ servidores http) puede también actuar como proxy inverso, también conocido
+ como "servidor de paso" o gateway.
+ </p>
+
+ <p>En tales escenarios, el propio httpd no genera contenido o aloja datos,
+ en su lugar el contenido se obtiene de uno o varios servidores backend, que
+ normalmente no tienen conexión directa con redes externas. Cuando httpd
+ recibe una petición de un cliente, se hace <em>proxy</em> de esta petición
+ a uno de estos servidores backend, que gestiona la petición, genera el
+ contenido y entonces envía este contenido de vuelta a httpd, que
+ entonces genera la respuesta HTTP definitiva que se envía de vuelta al cliente.
+ </p>
+
+ <p>Existen muchas razones para usar esta implementación, pero generalmente
+ las razones típicas se deben a seguridad, alta disponibilidad, balanceo
+ de carga, y centralización de autenticación/autorización. Es crítico en
+ estas implementaciones que la arquitectura y el diseño de la infraestructura
+ de los backend (esos servidores que son los que acaban gestionando las peticiones)
+ estén aislados y protegidos del exterior; en cuanto al cliente se refiere,
+ el proxy inverso <em>és</em> la única fuente de todo el contenido.</p>
+
+ <p>Ejemplo de implementación típica:</p>
+ <p class="centered"><img src="../images/reverse-proxy-arch.png" alt="reverse-proxy-arch" /></p>
+
+ </div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Proxy Inverso</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#simple">Proxy inverso sencillo</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#cluster">Clusters y Balanceadores</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#config">Configuración de Balanceador y BalancerMember</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#failover">Tolerancia a fallos</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#manager">Gestor del Balanceador</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#health-check">Comprobaciones de estado dinámicas</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#status">Marcas de estado de los Miembros del Balanceador</a></li>
+</ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Proxy Inverso</a></h2>
+
+ <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>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="simple" id="simple">Proxy inverso sencillo</a></h2>
+
+
+ <p>
+ La directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>
+ especifica el mapeo de peticiones entrantes al servidor backend (o un cluster
+ de servidores conocido como grupo de <code>Balanceo</code>). El ejemplo
+ más sencillo hace proxy de todas las solicitudes (<code>"/"</code>) a un solo backend:
+ </p>
+
+ <pre class="prettyprint lang-config">ProxyPass "/" "http://www.example.com/"</pre>
+
+
+ <p>
+ Para asegurarse de ello y que las cabeceras <code>Location:</code>
+ generadas en el backend se modifican para apuntar al proxy inverso,
+ en lugar del propio backend, la directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">
+ ProxyPassReverse</a></code> suele ser necesaria a menudo:
+ </p>
+
+ <pre class="prettyprint lang-config">ProxyPass "/" "http://www.example.com/"
+ProxyPassReverse "/" "http://www.example.com/"</pre>
+
+
+ <p>Sólo se hará proxy de ciertas URIs, como se muestra en este ejemplo:</p>
+
+ <pre class="prettyprint lang-config">ProxyPass "/images/" "http://www.example.com/"
+ProxyPassReverse "/images/" "http://www.example.com/"</pre>
+
+
+ <p>En este ejemplo, se hará proxy al backend especificado,
+ de cualquier solicitud que comience con la ruta <code>/images/</code>, si
+ no se gestionarán localmente.
+ </p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="cluster" id="cluster">Clusters y Balanceadores</a></h2>
+
+
+ <p>
+ Aunque los ejemplos de más arriba son útiles, tienen la deficiencia en la
+ que si el backend se cae, o recibe mucha carga, hacer proxy de esas solicitudes
+ no aporta grandes beneficios. Lo que se necesita es la habilidad de definir un
+ grupo de servidores backend que puedan gestionar esas peticiones y que el proxy
+ inverso pueda balancear la carga y aplicar la tolerancia a fallos entre los backend.
+ A veces a este grupo se le llama <em>cluster</em>, pero el término para Apache httpd
+ es <em>balanceador</em>. Se puede definir un balanceador usando las directivas
+ <code class="directive"><a href="../mod/mod_proxy.html#proxy"><Proxy></a></code> and
+ <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> como se muestra
+ a continuación:
+ </p>
+
+ <pre class="prettyprint lang-config"><Proxy balancer://myset>
+ BalancerMember http://www2.example.com:8080
+ BalancerMember http://www3.example.com:8080
+ ProxySet lbmethod=bytraffic
+</Proxy>
+
+ProxyPass "/images/" "balancer://myset/"
+ProxyPassReverse "/images/" "balancer://myset/"</pre>
+
+
+ <p>
+ El esquema <code>balancer://</code> es lo que le dice a httpd que estamos
+ generando un grupo de balanceo, con el nombre <em>myset</em>. Incluye 2
+ servidores backend, que httpd llama <em>BalancerMember</em>. En este caso,
+ se hará proxy inverso de cualquier petición para <code>/images/</code>
+ hacia <em>uno</em> de los dos backend.
+ La directiva <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> especifica que
+ el Balanceador <em>myset</em> usa un algoritmo que balancea basado en los
+ bytes de entrada/salida (I/O).
+ </p>
+
+ <div class="note"><h3>Información adicional</h3>
+ <p>
+ También se refiere a los Miembros del Balanceador <em>BalancerMember</em>
+ como <em>workers</em> (trabajadores).
+ </p>
+ </div>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="config" id="config">Configuración de Balanceador y BalancerMember</a></h2>
+
+
+ <p>
+ Puede ajustar numerosos parámetros de los <em>balanceadores</em>
+ y los <em>workers</em> definiéndolos a través de la directiva
+ <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. Por ejemplo,
+ asumiendo que quisiéramos que <code>http://www3.example.com:8080</code> gestionara
+ 3 veces más tráfico con un "timeout" de 1 segundo, ajustaríamos la configuración como sigue:
+ </p>
+
+ <pre class="prettyprint lang-config"><Proxy balancer://myset>
+ BalancerMember http://www2.example.com:8080
+ BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
+ ProxySet lbmethod=bytraffic
+</Proxy>
+
+ProxyPass "/images/" "balancer://myset/"
+ProxyPassReverse "/images/" "balancer://myset/"</pre>
+
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="failover" id="failover">Tolerancia a fallos</a></h2>
+
+
+ <p>
+ Puede también ajustar varios escenarios de tolerancia a fallos, detallando
+ qué workers, e incluso balanceadores, deberían usarse en tales casos.
+ Por ejemplo, la siguiente configuración implementa dos casos de tolerancia
+ a fallos: En el primero, sólo se envía tráfico a
+ <code>http://hstandby.example.com:8080</code> si todos los demás workers en
+ el balanceador <em>myset</em> no están disponibles. Si ese worker tampoco está
+ disponible, sólo entonces los workers de <code>http://bkup1.example.com:8080</code>
+ y <code>http://bkup2.example.com:8080</code> serán incluidos en la rotación:
+ </p>
+
+ <pre class="prettyprint lang-config"><Proxy balancer://myset>
+ BalancerMember http://www2.example.com:8080
+ BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
+ BalancerMember http://hstandby.example.com:8080 status=+H
+ BalancerMember http://bkup1.example.com:8080 lbset=1
+ BalancerMember http://bkup2.example.com:8080 lbset=1
+ ProxySet lbmethod=byrequests
+</Proxy>
+
+ProxyPass "/images/" "balancer://myset/"
+ProxyPassReverse "/images/" "balancer://myset/"</pre>
+
+
+ <p>
+ La "magia" de ésta configuración de tolerancia a fallos es configurar
+ <code>http://hstandby.example.com:8080</code> con la marca de estado
+ <code>+H</code>, que lo pone en modo <em>hot standby</em> (en reserva),
+ y hacen que los dos 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 activos no están disponibles; los set de balanceo con números inferiores se usan siempre primero.
+ </p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="manager" id="manager">Gestor del Balanceador</a></h2>
+
+
+ <p>
+ Una de las características más útiles y única del proxy inverso de Apache
+ httpd es la aplicación embebida <em>balancer-manager</em> (gestor de balanceo).
+ wSimilar a <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>, <em>balancer-manager</em> muestra
+ la configuración actual que está funcionando, el estado de los balanceadores
+ activados y workers que están en uso en ese momento. Aun así, no sólo muestra
+ estos parámetros, también permite reconfiguración dinámica, en tiempo real, de
+ prácticamente todos ellos, incluido añadir nuevos <em>BalancerMember</em> (workers)
+ a un balanceo existente. Para activar esta prestación, se tiene que añadir lo siguiente a la configuración:
+ </p>
+
+ <pre class="prettyprint lang-config"><Location "/balancer-manager">
+ SetHandler balancer-manager
+ Require host localhost
+</Location></pre>
+
+
+ <div class="warning"><h3>Atención</h3>
+ <p>No active el <em>balancer-manager</em> hasta que haya <a href="../mod/mod_proxy.html#access">securizado su servidor</a>. En particular,
+ asegúrese de que el acceso a ésta URL (la de configuración del balanceador)
+ esté altamente restringido.</p>
+ </div>
+
+ <p>
+ Cuando se accede al proxy inverso en la url
+ (p.e: <code>http://rproxy.example.com/balancer-manager/</code>, verá una
+ página similar a la siguiente:
+ </p>
+ <p class="centered"><img src="../images/bal-man.png" alt="balancer-manager page" /></p>
+
+ <p>
+ Este formulario permite al administrador ajustar varios parámetros, desactivar
+ workers, cambiar los métodos de balanceo de carga y añadir nuevos workers.
+ Por ejemplo, haciendo clic en el balanceador, verá la siguiente página:
+ </p>
+ <p class="centered"><img src="../images/bal-man-b.png" alt="balancer-manager page" /></p>
+
+ <p>
+ Y haciendo clic en el worker, mostrará esta página:
+ </p>
+ <p class="centered"><img src="../images/bal-man-w.png" alt="balancer-manager page" /></p>
+
+ <p>
+ Para hacer que estos cambios sean persistentes en los reinicios del proxy
+ inverso, asegúrese de que <code class="directive"><a href="../mod/mod_proxy.html#balancerpersist">BalancerPersist</a></code> está activado.
+ </p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="health-check" id="health-check">Comprobaciones de estado dinámicas</a></h2>
+
+
+ <p>
+ Antes de que httpd haga proxy de una petición a un worker, puede <em>"comprobar"</em>
+ si ese worker está disponible mediante el parámetro de configuración <code>ping</code>
+ para ese worker usando <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>.
+ A menudo es más útil comprobar el estado de los workers <em>no disponibles</em>,
+ 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>.
+ </p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="status" id="status">Marcas de estado de los Miembros del Balanceador</a></h2>
+
+
+ <p>
+ En el <em>balancer-manager</em> el estado actual, o <em>status</em>, de un worker
+ se muestra y puede ser configurado/reseteado. El significado de estos estados es el siguiente:
+ </p>
+ <table class="bordered">
+ <tr><th>Marca</th><th>Cadena</th><th>Descripción</th></tr>
+ <tr><td> </td><td><em>Ok</em></td><td>El Worker está disponible</td></tr>
+ <tr><td> </td><td><em>Init</em></td><td>El Worker ha sido inicializado</td></tr>
+ <tr><td><code>D</code></td><td><em>Dis</em></td><td>El Worker está
+ desactivado y no aceptará peticiones; se intentará reutilizar automáticamente.</td></tr>
+ <tr><td><code>S</code></td><td><em>Stop</em></td><td>El Worker ha sido desactivado por el
+ administrador; no aceptará peticiones y no se reintentará utilizar automáticamente</td></tr>
+ <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>
+ <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>
+ <tr><td><code>E</code></td><td><em>Err</em></td><td>El Worker está en estado de error,
+ generalmente debido a fallos de comprobación antes de enviar peticiones; no se hará
+ proxy de peticiones a este worker, pero se reintentará el uso de este worker
+ dependiendo de la configuración del parámetro <code>retry</code>.</td></tr>
+ <tr><td><code>N</code></td><td><em>Drn</em></td><td>El Worker está en modo vaciado y sólo aceptará
+ sesiones activas previamente destinadas a él mismo y obviará el resto de peticiones.</td></tr>
+ <tr><td><code>C</code></td><td><em>HcFl</em></td><td>La comprobación dinámica del estado del Worker
+ ha fallado y no se usará hasta que pase las comprobaciones de estado posteriores.</td></tr>
+ </table>
+ </div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/reverse_proxy.html" title="Español"> es </a></p>
+</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&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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/reverse_proxy.html';
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
-//--><!]]></script></div><div id="footer">\r
-<p class="apache">Copyright 2017 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>\r
-<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[//><!--
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2017 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>
+<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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
-//--><!]]></script>\r
+//--><!]]></script>
</body></html>
\ No newline at end of file