blob: c2bd8af00a7b36c9cb4717e787f7a3ca85825aeb [file]
<?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: 1933438 -->
<!-- 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>