<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
<!-- $LastChangedRevision: 1565335 $ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You 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="bind.xml.meta">

  <title>Enlazando a Direcciones y Puertos</title>

  <summary>
    <p>Configurando el Servidor Apache HTTP en direcciones y puertos específicos.</p>
  </summary>

  <seealso><a href="vhosts/">Hosts Virtuales</a></seealso>
  <seealso><a href="dns-caveats.html">Problemas de DNS</a></seealso>

  <section id="overview">
    <title>Resumen</title>

    <related>
      <modulelist>
        <module>core</module>
        <module>mpm_common</module>
      </modulelist>
      <directivelist>
        <directive module="core" type="section">VirtualHost</directive>
        <directive module="mpm_common">Listen</directive>
      </directivelist>
    </related>


    <p>Cuando httpd arranca, enlaza con una direccion y puerto
    en la máquina local y espera a recibir peticiones. Por defecto,
    escucha en todas las direcciones de la máquina. Aun así, se puede
    configurar para que escuche en puertos específicos, o solo en 
    direcciones específicas, o una combinación de ambos. Esto a menudo 
    se combina con la característica <a href="vhosts/">Host Virtual</a>, 
    la cual determina cómo <code>httpd</code> responde a diferentes 
    direcciones IP, nombres de host y puertos.</p>

    <p>La directiva <directive module="mpm_common">Listen</directive>
    le indica al servidor que acepte peticiones entrantes solo en el/los
    puerto/s especificado/s o en la combinación especificada de 
    direcciónes y puertos definidos. Si tan solo se especifica un número de puerto en
    la directiva <directive module="mpm_common">Listen</directive>, el 
    servidor escucha en el puerto especificado en todos los interfaces de 
    red disponibles. Si se especifica una dirección IP y también un puerto, 
    el servidor escuchará en el puerto y dirección específicados. Se pueden 
    usar múltiples directivas <directive module="mpm_common">Listen</directive> 
    para especificar varias direcciones y puertos en los que escuchar. El 
    servidor responderá a peticiones de cualquiera de las direcciones y puertos 
    especificados.</p>

    <p>Por ejemplo, para hacer que el servidor acepte conexiones tanto en el
    puerto 80 como el puerto 8000, de todos los interfaces, use:</p>

    <example>
    <highlight language="config">
Listen 80
Listen 8000
    </highlight>
    </example>

    <p>Para hacer que el servidor acepte conexiones en el puerto 80 de un
    interfaz y en el puerto 8000 de otro, use:</p>

    <example>
    <highlight language="config">
Listen 192.0.2.1:80
Listen 192.0.2.5:8000
    </highlight>
    </example>

    <p>Las direcciones IPv6 deben estar definidas entre corchetes, como en el
    siguiente ejemplo:</p>

    <example>
    <highlight language="config">
      Listen [2001:db8::a00:20ff:fea7:ccea]:80
    </highlight>
    </example>

    <note type="warning"><p>Solapar directivas <directive
    module="mpm_common">Listen</directive> provocará un error fatal que impedirá
    que el servidor pueda arrancar.</p>

    <example>
      (48)Address already in use: make_sock: could not bind to address [::]:80
    </example>

    <p>Vea la <a 
    href="http://wiki.apache.org/httpd/CouldNotBindToAddress">documentación en el
    wiki</a> para más consejos en la resolución de problemas.</p>

</note>

  </section>

  <section id="ipv6">
    <title>Consideraciones especiales con IPv6</title>

    <p>Un número creciente de plataformas tienen soporte para IPv6, y
    <glossary>APR</glossary> da soporte a IPv6 en la mayoría de estas 
    plataformas, permitiendo que httpd use sockets IPv6 y responder peticiones
    sobre IPv6.</p>

    <p>Un factor de complicación para los administradores de httpd es si
    un socket IPv6 puede gestionar conexiones tanto de IPv6 como de IPv4. 
    Gestionar conexiones IPv4 con un socket IPv6 usa direcciones IPv6 
    mapeadas-en-IPv4, que se permiten por defecto en la mayoría de las plataformas, 
    pero no se permiten por defecto en FreeBSD, NetBSD y OpenBSD, esto ocurre con 
    el propósito de coincidir con las políticas del sistema de esas plataformas. 
    En sistemas en los que no se permite por defecto, un parámetro especial de
    <program>configure</program> puede cambiar este comportamiento para httpd.</p>

    <p>Por otro lado, en algunas plataformas, tales como Linux y Tru64, la
    <strong>única</strong> manera de gestionar tanto IPv6 como IPv4 es usar direcciones
    mapeadas. Si quiere que <code>httpd</code> gestione conexiones IPv4 y IPv6 con un
    mínimo de sockets, lo cual require usar direcciones IPv6 mapeadas-en-IPv4, debe 
    especificar la opción <code>--enable-v4-mapped</code> en <program>
    configure</program>.</p>

    <p><code>--enable-v4-mapped</code> es la opción por defecto en todas
    plataformas excepto FreeBSD, NetBSD, and OpenBSD, así que probablemente
    esta es la opción con la que su httpd ha sido compilado.</p>

    <p>Si quiere que httpd gestione solo conexiones IPv4, indistintamente de
    lo que den soporte su plataforma o APR, especifique direcciones IPv4 en
    todas sus directivas <directive module="mpm_common">Listen</directive>, como en los
    siguientes ejemplos:</p>

    <example>
    <highlight language="config">
Listen 0.0.0.0:80
Listen 192.0.2.1:80
    </highlight>
    </example>

    <p>Si su plataforma lo soporta y aun asi quiere gestionar conexiones
    IPv4 e IPv6 en sockets diferentes (p. ej., para desactivar direcciones
    mapeadas-en-IPv4), especifique la opción <code>--disable-v4-mapped</code>
    en <program>configure</program>. <code>--disable-v4-mapped</code> es la
    opción por defecto en FreeBSD, NetBSD, and OpenBSD.</p>
  </section>

  <section id="protocol">
    <title>Especificar el protocolo con Listen</title>
    <p>El segundo parámetro opcional <var>protocol</var> de
       <directive module="mpm_common">Listen</directive>
       no es necesario para la mayoría de las configuraciones. Si no se especifica, 
       <code>https</code> es la opción por defecto para el puerto 443 y <code>http</code> 
       la opción por defecto para el resto de los puertos. El protocolo se usa para 
       determinar qué módulo deberá gestionar una petición, y aplicar optimizaciones
       específicas del protocolo con la directiva
       <directive module="core">AcceptFilter</directive>.</p>

    <p>Solo necesita especificar el protocolo si está usando puertos no estándar.
    Por ejemplo, ofreciendo <code>https</code> en el puerto 8443:</p>

    <example>
    <highlight language="config">
      Listen 192.170.2.1:8443 https
    </highlight>
    </example>
  </section>

  <section id="virtualhost">
    <title>Cómo funciona esto con Hosts Virtuales</title>

    <p> La directiva <directive
    module="mpm_common">Listen</directive> no implementa Hosts
    Virtuales - solo le indica al servidor principal las direcciones
    y puertos en los que tiene que escuchar. Si no se usan directivas
    <directive module="core" type="section">VirtualHost</directive>, 
    el servidor se comportará de la misma manera para todas las peticiones
    aceptadas. Aun así, se puede usar <directive module="core" type="section">VirtualHost</directive>
    para especificar un comportamiento diferente para una o más direcciones
    y puertos. Para implementar un Host Virtual, se le debe indicar al 
    servidor la dirección y el puerto a usar. Así que, debe especificar una sección
    <directive module="core" type="section">VirtualHost</directive> con la
    dirección y el puerto especificados para configurar el comportamiento de este
    Host Virtual. Tenga en cuenta que si
    <directive module="core" type="section">VirtualHost</directive>
    se espefifica con una dirección y puerto en los que el servidor no está
    escuchando, no se podrá acceder a este Host Virtual.</p>
  </section>
</manualpage>

