<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.pt-br.xsl"?>
<!-- English Revision: 1933437 -->
<!-- Portuguese(BR) translation: leonardolara --><!-- Reviewed by: leonardolara -->
<!--
 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>Vinculando a Endereços e Portas</title>

  <summary>
    <p>Configurando o Servidor HTTP Apache para escutar em endereços e portas específicas.</p>
  </summary>

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

  <section id="overview">
    <title>Visão Geral</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>Quando o httpd inicia, ele se vincula a algumas portas e endereços na
    máquina local e aguarda por requisições entrantes. Por padrão,
    ele monitora todos os endereços na máquina. No entanto, pode ser necessário
    monitoramento em portas específicas ou somente em
    endereços selecionados, ou uma combinação dos dois. Isto é muitas vezes combinado com
    o recurso de <a href="vhosts/">Host Virtual</a>, que determina como o
    <code>httpd</code> responde a endereços, nomes de hosts e portas
    diferentes.</p>

    <p>A diretiva <directive module="mpm_common">Listen</directive>
    informa ao servidor que ele deve aceitar
    requisições entrantes apenas na(s) porta(s) especificada(s) ou
    em combinações de endereço e porta. Se apenas um número de porta for
    especificado na diretiva <directive module="mpm_common">Listen</directive>,
    o servidor monitora a porta informada em todas as interfaces.
    Se um endereço IP é informado junto com uma porta, o servidor irá monitorar
    na porta e na interface especificadas. Múltiplas diretivas <directive
    module="mpm_common">Listen</directive> podem ser usadas para
    especificar vários endereços e portas para monitoramento. O
    servidor responderá a requisições de quaisquer dos endereços e
    portas listados.</p>

    <p>Por exemplo, para que o servidor aceite conexões tanto na
    porta 80 quanto na 8000, em todas as interfaces, use:</p>

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

    <p>Para que o servidor aceite conexões na porta 80 para uma interface
       e na porta 8000 para outra, use:</p>

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

    <p>Endereços IPv6 precisam ser envolvidos por colchetes, como no
    exemplo a seguir:</p>

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

    <note type="warning"><p>A sobreposição de diretivas <directive
    module="mpm_common">Listen</directive> resultará em um
    erro fatal que irá impedir o servidor de iniciar.</p>

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

    <p>Consulte esta <a
    href="https://cwiki.apache.org/confluence/display/httpd/CouldNotBindToAddress">discussão
    na wiki</a> para mais dicas de soluções de problemas.</p>

</note>

  </section>

  <section id="reload">
    <title>Alterando a configuração de Listen no reinício</title>

    <p>Quando o httpd é reiniciado, uma consideração especial precisa ser feita para
    alterações a diretivas <directive module="mpm_common">Listen</directive>. Durante um reinício, o httpd mantém as portas
    vinculadas (como na configuração original) para evitar a geração de erros
    "Connection refused" (conexão recusada) para quaisquer novas tentativas de conexão
    ao servidor. Se as alterações são feitas no conjunto de diretivas <directive module="mpm_common">Listen</directive>
    que conflitam com a configuração antiga, a configuração irá falhar
    e o servidor irá terminar.</p>

    <p>Por exemplo, alterando da configuração:</p>

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

    <p>para a configuração a seguir pode falhar, porque a vinculação da porta 80 para
    todos os endereços conflita com a vinculação da porta 80 somente para
    127.0.0.1.</p>

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

    <p>Para que tal configuração tenha efeito, é necessário
    parar e depois iniciar o servidor.</p>

  </section>

    <section id="ipv6">
    <title>Considerações Especiais sobre IPv6</title>

    <p>Um número crescente de plataformas implementa IPv6 e o
    <glossary>APR</glossary> suporta IPv6 na maioria delas,
    permitindo que o httpd aloque soquetes IPv6 e manipule requisições enviadas
    através de IPv6.</p>

    <p>Um fator complicador para administradores de httpd é definir se
    um soquete IPv6 pode lidar tanto com conexões IPv4 quanto com
    IPv6. Lidar com conexões IPv4 com soquete IPv6 usa
    endereços IPv6 mapeados para IPv4, o que é permitido por padrão na maioria
    das plataformas mas é proibido por padrão no FreeBSD, NetBSD e
    OpenBSD, para alinhamento com a política de sistema dessas
    plataformas. Em sistemas onde isso é proibido por padrão, um
    parâmetro especial do programa <program>configure</program> pode alterar este
    comportamento para o httpd.</p>

    <p>Por outro lado, em algumas plataformas como Linux e Tru64, a
    <strong>única</strong> forma de lidar tanto com IPv6 quanto com IPv4 é usar
    endereços mapeados. Se o <code>httpd</code> tiver que lidar com conexões IPv4 e IPv6
    com um mínimo de soquetes, que requerem o uso de endereços IPv6 mapeados
    para IPv4, especifique a opção <code>--enable-v4-mapped</code> do programa <program>
    configure</program>.</p>

    <p><code>--enable-v4-mapped</code> é o padrão para todas as plataformas exceto
    para FreeBSD, NetBSD e OpenBSD, portanto esta é provavelmente a forma como o seu httpd foi
    compilado.</p>

    <p>Se o httpd tiver que lidar somente com conexões IPv4, independente do que
    a sua plataforma e APR irão suportar, especifique um endereço IPv4 em todas as
    diretivas <directive module="mpm_common">Listen</directive>, como nos
    exemplos a seguir:</p>

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

    <p>Se a sua plataforma suporta e a intenção for lidar com conexões IPv4 e
    IPv6 em soquetes separados (ou seja, desabilitar endereços mapeados
    para IPv4), especifique a opção <code>--disable-v4-mapped</code> do programa <program>
    configure</program>. <code>--disable-v4-mapped</code> é o padrão
    no FreeBSD, NetBSD, e OpenBSD.</p>
  </section>

  <section id="protocol">
    <title>Especificando o protocolo com Listen</title>
    <p>O segundo argumento opcional <var>protocol</var> de
       <directive module="mpm_common">Listen</directive>
       não é requerido para a maioria das
       configurações. Se não especificado, <code>https</code> é o padrão para
       a porta 443 e <code>http</code> é o padrão para todas as outras portas. O
       protocolo é usado para determinar que módulo deve lidar com uma requisição e
       para aplicar otimizações de protocolo específicas com a diretiva
       <directive module="core">AcceptFilter</directive>.</p>

    <p>Somente é necessário definir o protocolo se o servidor estiver monitorando
       portas não padrão. Por exemplo, para servir um site <code>https</code> na porta 8443:</p>

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

  <section id="virtualhost">
    <title>Como Isto Funciona com Hosts Virtuais</title>

    <p>A diretiva <directive
    module="mpm_common">Listen</directive> não implementa
    Hosts Virtuais - ela apenas informa ao
    servidor principal quais endereços e portas devem ser monitorados. Se nenhuma
    diretiva <directive module="core" type="section">VirtualHost</directive>
    for usada, o servidor se comportará
    da mesma forma para todas as requisições aceitas. Entretanto,
    <directive module="core" type="section">VirtualHost</directive>
    pode ser usada para especificar um comportamento diferente
    para um ou mais dos enredeços e portas. Para implementar um
    Host Virtual, o servidor primeiro precisa ser informado para monitorar o
    endereço e a porta que serão usados. Depois, uma
    seção <directive module="core" type="section">VirtualHost</directive>
    deve ser criada para o endereço e a porta especificados para definir o
    comportamento desse host virtual. Observe que se a seção
    <directive module="core" type="section">VirtualHost</directive>
    estiver definida para um endereço e uma porta que o
    servidor não estiver monitorando, o host virutal não poderá ser acessado.</p>
  </section>
</manualpage>
