Esse documento descreve algumas das mudanças principais entre as versões 1.3 e 2.0 do Servidor HTTP Apache.
Em sistemas Unix com suporte a threads POSIX, o Apache pode funcionar em modo híbrido multiprocesso e multithread. Não funciona em todas configurações, mas melhora a escalabilidade em muitas.
O sistema de compilação foi reescrito do zero para utilizar o autoconf e o libtool, tornando a configuração do sistema Apache mais similar a de outros pacotes.
O Apache possui agora uma infraestrutura feita para suportar múltiplos protocolos. O módulo mod_echo é um exemplo ilustrativo de sua utilização.
O Apache 2.0 está mais rápido e mais estável em plataformas Não-Unix como BeOS, OS/2 e Windows. Com a introdução de módulos multi-processamento (MPMs) específicos e a Apache Portable Runtime (APR), essas plataformas estão implementando as suas APIs nativas, evitando as camadas de emulação POSIX que se mostravam lentas e defeituosas.
A API para módulos mudou significativamente na versão 2.0. Muitos dos problemas de ordenamento/prioridade da versão 1.3 foram resolvidos. A versão 2.0 faz o ordenamento automático "per-hook" para permitir mais flexibilidade. Novas chamadas foram adicionadas para fornecer capacidades adicionais sem a necessidade de se aplicar nenhum patch ao servidor Apache principal.
Em sistemas onde o IPv6 é suportado pela biblioteca de base Apache Portable Runtime, o Apache monitora por padrão as interfaces IPv6. Em adição as diretrizes Listen, NameVirtualHost e VirtualHost, suportam correntes (strings) de endereços numéricos do tipo IPv6. (ex. "Listen [2001:db8::1]:8080").
Os módulos do Apache agora são feito filtros que agem na corrente do conteúdo na medida que este é entregue, tanto na entrada quando na saída de dados do servidor. É possível então, por exemplo, que o retorno de dados de scripts CGI sejam analisados pelas diretrizes do "Server Side Include" usando o filtro INCLUDES do mod_include. O módulo mod_ext_filter, permite que programas externos trabalhem como filtros do mesmo modo que aplicações CGI funcionam como manipuladores.
Mensagens de erro para o navegador agora são fornecidas em diversas línguas, usando documentos SSI. Podem ser personalizadas pelo administrador que desejar definir seus próprios padrões.
Muitas diretrizes confusas foram simplificadas. Entre elas, Port e BindAddress não existem mais; apenas a diretriz Listen é usada para direcionar endereços IP; a diretriz ServerName especifica o nome do servidor e o número da porta apenas para redirecionamento e reconhecimento de hospedeiros virtuais.
O Apache 2.0 para Windows NT agora usa utf-8 para codificação de todos os nomes de arquivos. A tradução para o sistema base Unicode, torna possível o suporte multi-lingual para todas as instalações da família NT, incluindo o Windows 2000 e Windows XP. Esse suporte não se estende ao Windows 95, 98 ou ME, que continuam usando o código de páginas da máquina local para o acesso ao sistema de arquivos.
O Apache 2.0 inclui a Biblioteca de Expressões Regulares Compatíveis Perl (PCRE). Todas as avaliações de expressões regulares usam a mais poderosa sintaxe do Perl 5.
Novo módulo no Apache 2.0. Esse módulo é uma interface para os protocolos de codificação SSL/TLS fornecidos pela OpenSSL.
Novo módulo no Apache 2.0. Este módulo implementa as especificações de Autoria Distribuída e Versões (Distributed Authoring and Versioning - DAV) para HTTP, para a publicação e a manutenção de conteúdo da web.
Novo módulo no Apache 2.0.41. Este módulo permite que bancos de dados LDAP sejam usados para armazenar credenciais para Autenticação Básica HTTP. Um módulo que o acompanha mod_ldap, fornece a conciliação de conexões e armazenamento de resultados.
Inclui suporte adicional para armazenamento de sessões através de processos que usam memória compartilhada.
Novo módulo no Apache 2.0. Este modo experimental permite a tradução de tabelas de caracteres ou re-codificação.
Este módulo está muito mais flexível no Apache 2.0. Pode modificar pedidos de cabeçalhos usados pelo mod_proxy, e incondicionalmente pode ajustar cabeçalhos de respostas.
O módulo proxy foi totalmente reescrito para levar vantagem da nova infraestrutura de filtro e implementar um proxy mais fiel e de acordo com o padrão HTTP/1.1. Além disso, uma nova seção de configuração <Proxy> fornece controles mais legíveis (e internamente mais rápidos) para sites com proxies; configurações sobrecarregadas <Directory "proxy:...">, não são suportadas. O módulo agora é dividido em suporte de protocolos específicos incluindo proxy_connect, proxy_ftp e proxy_http.
A nova diretriz ForceLanguagePriority pode ser usada para assegurar que o cliente receba um único documento em todos os casos, ao invés de respostas "NOT ACCEPTABLE" ou "MULTIPLE CHOICES". Novos algoritmos de negociação e visões múltiplas (MultiViews) foram organizados para obter resultados mais consistentes e uma nova forma de tipo de mapa (map type) que podem incluir o conteúdo de documentos é fornecido.
As listagens de diretórios automáticas podem ser configuradas para usar tabelas HTML para formatações mais limpas e permitir controles mais acurados de classificação, incluindo ordenação por versão e filtro da lista de diretórios através de caracteres-coringa.
Novas diretrizes permitem que as tags padrões start e end para elementos SSI, possam ser alteradas e permitir que as configurações de formatos de erro e hora sejam incluídos no arquivo de configuração principal, ao invés de serem adicionadas ao documento SSI. Resultados de análises de expressões regulares e agrupamento (baseadas na sintaxe de expressões regulares do Perl) podem ser obtidas usando as variáveis do módulo mod_include, de $0 a $9.