<-
Apache > Servidor HTTP > Documentação > Versão 2.4

Atualizando da versão 2.2 para 2.4

Línguas Disponíveis:  en  |  fr  |  pt-br 

Para auxiliar os usuários na atualização, mantemos um documento que descreve informações essenciais para usuários existentes do Servidor HTTP Apache. Estas notas são breves e você poderá encontrar mais informações no documento Novas Funcionalidades ou no arquivo src/CHANGES. Desenvolvedores de aplicações e módulos podem encontrar um resumo das alterações da API na Visão geral de atualizações da API.

Este documento descreve alterações no comportamento do servidor que podem exigir que você altere sua configuração ou a forma como usa o servidor para continuar usando a versão 2.4 da mesma forma que usa a versão 2.2. Para aproveitar os novos recursos da versão 2.4, consulte o documento sobre Novas Funcionalidades.

Este documento descreve apenas as alterações da versão 2.2 para a 2.4. Se você estiver atualizando da versão 2.0, também deverá consultar o Documento de Atualização da versão 2.0 para 2.2.

Veja também

top

Alterações na Configuração no Momento da Compilação

O processo de compilação é muito semelhante ao usado na versão 2.2. Sua antiga linha de comando configure (encontrada em build/config.nice no diretório do servidor instalado) pode ser usada na maioria dos casos. Há algumas alterações nas configurações padrão. Alguns detalhes das alterações:

top

Alterações na Configuração no Momento da Execução

Houve mudanças significativas na configuração de autorização e outras pequenas alterações de configuração que podem exigir alterações em seus arquivos de configuração da versão 2.2 antes de usá-los na versão 2.4.

Autorização

Qualquer arquivo de configuração que utilize autorização provavelmente precisará de alterações.

Você deve revisar a seção Como Fazer: Autenticação, Autorização e Controle de Acesso, especialmente a parte Além da simples autorização que explica os novos mecanismos para controlar a ordem em que as diretivas de autorização são aplicadas.

As diretivas que controlam como os módulos de autorização respondem quando não correspondem ao usuário autenticado foram removidas: Isso inclui AuthzLDAPAuthoritative, AuthzDBDAuthoritative, AuthzDBMAuthoritative, AuthzGroupFileAuthoritative, AuthzUserAuthoritative, e AuthzOwnerAuthoritative. Essas diretivas foram substituídas pelas diretivas mais expressivas RequireAny, RequireNone e RequireAll.

Se você usa mod_authz_dbm, você deve migrar sua configuração para usar Require dbm-group ... em vez de Require group ....

Controle de acesso

Na versão 2.2, o controle de acesso baseado no nome do host do cliente, no endereço IP, e em outras características das solicitações do cliente era feito usando as diretivas Order, Allow, Deny e Satisfy.

Na versão 2.4, esse controle de acesso é feito da mesma forma que outras verificações de autorização, usando o novo módulo mod_authz_host. Os antigos padrões de controle de acesso devem ser substituídos pelos novos mecanismos de autenticação, embora, para compatibilidade com configurações antigas, o novo módulo mod_access_compat seja fornecido.

Misturando diretivas antigas com novas

Misturar diretivas antigas como Order, Allow ou Deny com novas como Require é possível tecnicamente porém não é recomendado. mod_access_compat foi criado para suportar configurações que contêm somente diretivas antigas para facilitar a migração para a versão 2.4. Favor verificar os exemplos abaixo para ter uma ideia melhor sobre os problemas que podem surgir.

Aqui estão alguns exemplos de maneiras antigas e novas de fazer o mesmo controle de acesso.

Neste exemplo, não há autenticação e todas as solicitações são negadas.

Configuração na versão 2.2:

Order deny,allow
Deny from all

Configuração na versão 2.4:

Require all denied

Neste exemplo, não há autenticação e todas as solicitações são permitidas.

Configuração na versão 2.2:

Order allow,deny
Allow from all

Configuração na versão 2.4:

Require all granted

No exemplo a seguir, não há autenticação e todos os hosts no domínio example.org têm acesso permitido; todos os outros têm acesso negado.

Configuração na versão 2.2:

Order Deny,Allow
Deny from all
Allow from example.org

Configuração na versão 2.4:

Require host example.org

No exemplo a seguir, misturar diretivas antigas e novas leva a resultados inesperados.

Misturando diretivas antigas e novas: NÃO FUNCIONA COMO ESPERADO

DocumentRoot "/var/www/html"

<Directory "/">
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Location "/server-status">
    SetHandler server-status
    Require local
</Location>

access.log - GET /server-status 403 127.0.0.1
error.log - AH01797: client denied by server configuration: /var/www/html/server-status

Por que o httpd nega acesso a server-status mesmo quando a configuração parece permitir? Porque as diretivas mod_access_compat tem precedência sobre as mod_authz_host neste cenário de mesclagem de configurações.

Este exemplo, por outro lado, funciona como esperado:

Misturando diretivas antigas e novas: FUNCIONA COMO ESPERADO

DocumentRoot "/var/www/html"

<Directory "/">
    AllowOverride None
    Require all denied
</Directory>

<Location "/server-status">
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow From 127.0.0.1
</Location>

access.log - GET /server-status 200 127.0.0.1

Portanto, mesmo se a mistura de configurações ainda seja possível, tente evitar na atualizaçao: mantenha diretivas antigas e somente migre para as novas em um estágio posterior ou migre tudo de uma vez.

Em muitas configurações com autenticação, onde o valor de Satisfy tinha o padrão de ALL, trechos que simplesmente desligavam o controle de acesso baseado em host são omitidos:

Configuração na versão 2.2:

# configuração na versão 2.2 que desliga o controle de acesso baseado em host e usa somente autenticação
Order Deny,Allow
Allow from all
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user

Configuração na versão 2.4:

# Não é necessário substituir o controle de acesso baseado em host
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user

Em configurações onde a autenticação e o controle de acesso eram adequadamente combinados, as diretivas de controle de acesso devem ser migradas. Este exemplo permite que as solicitações atendam a ambos os critérios:

Configuração na versão 2.2:

Order allow,deny
Deny from all
# Satisfy ALL is the default
Satisfy ALL
Allow from 127.0.0.1
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user

Configuração na versão 2.4:

AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
<RequireAll>
  Require valid-user
  Require ip 127.0.0.1
</RequireAll>

Em configurações onde a autenticação e o controle de acesso eram adequadamente combinados, as diretivas de controle de acesso devem ser migradas. Este exemplo permite que as solicitações atendam a qualquer um dos critérios:

Configuração na versão 2.2:

Order allow,deny
Deny from all
Satisfy any
Allow from 127.0.0.1
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user

Configuração na versão 2.4:

AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
# <RequireAny> (implícito)
Require valid-user
Require ip 127.0.0.1

Outras mudanças na configuração

Alguns outros pequenos ajustes podem ser necessários para configurações em particular como discutido abaixo.

top

Alterações Miscelâneas

top

Módulos de Terceiros

Todos os módulos devem ser recompilados para a versão 2.4 antes de serem carregados.

Muitos módulos de terceiros projetados para a versão 2.2 funcionarão sem alterações com a versão 2.4 do Apache HTTP Server. Alguns exigirão alterações; consulte a Visão geral da atualização da API.

top

Problemas comuns ao atualizar

Línguas Disponíveis:  en  |  fr  |  pt-br