Compilando o Angie a partir do Código-fonte#
Recomendamos instalar o Angie a partir dos pacotes oficiais pré-compilados. No entanto, se você ainda precisar de sua própria compilação:
Baixe o arquivo
.tar.gzdo nosso site:$ curl -O https://download.angie.software/files/angie-1.10.3.tar.gz
Descompacte o arquivo e navegue até o diretório do código-fonte:
$ tar -xpf angie-1.10.3.tar.gz $ cd angie-1.10.3
Para preparar a compilação, use o script ./configure, que determina as características específicas do SO onde a compilação ocorre, particularmente os métodos que o Angie pode usar para lidar com conexões. Após uma execução bem-sucedida, o script cria um
Makefile.Antes de executar ./configure, revise e defina as opções de compilação necessárias:
$ ./configure <OPTIONS>
Quando o
Makefileestiver pronto, compile e instale o Angie:$ make $ make install
Opções de Compilação#
Geral#
Opção | Descrição | Padrão |
|---|---|---|
| Imprime uma mensagem de ajuda. | |
| Define o nome de um usuário sem privilégios cujas credenciais serão usadas pelos
processos worker. Após a instalação, o nome sempre pode ser alterado no
arquivo de configuração |
|
| Define o nome de um grupo cujas credenciais serão usadas pelos
processos worker. Após a instalação, o nome sempre pode ser alterado no
arquivo de configuração | configuração |
| Define um nome opcional para a compilação. | |
| Define o diretório de compilação. |
|
| Especifica o diretório para cache de artefatos de compilação. | Se definido sem um caminho, a configuração |
Caminhos#
Opção | Descrição | Padrão |
|---|---|---|
| Define o diretório que armazenará os arquivos do servidor. Este mesmo diretório
também será usado para todos os caminhos relativos definidos por ./configure
(exceto para caminhos para fontes de biblioteca) e no arquivo de configuração
|
|
| Define o nome do executável do Angie. Este nome é usado apenas durante a instalação. |
|
| Define o diretório onde os módulos dinâmicos serão instalados. |
|
| Define o nome do arquivo de configuração |
|
| Define o nome do arquivo de log principal de erro, aviso e diagnóstico.
Após a instalação, o nome do arquivo sempre pode ser alterado no
arquivo de configuração |
|
| Define o nome do arquivo |
|
| Define o prefixo para nomes de arquivos de bloqueio. Após a instalação,
o valor sempre pode ser alterado no arquivo de configuração |
|
| Define o diretório para armazenar certificados e chaves para
blocos |
|
| Define o nome do arquivo de log de requisições principal para o servidor HTTP. Após
a instalação, o nome do arquivo sempre pode ser alterado no
arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários que contêm corpos de requisições
de clientes. Após a instalação, o diretório sempre pode ser alterado no
arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores proxy. Após a instalação, o diretório sempre pode ser alterado
no arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores FastCGI. Após a instalação, o diretório sempre pode ser alterado
no arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores uWSGI. Após a instalação, o diretório sempre pode ser alterado no
arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores SCGI. Após a instalação, o diretório sempre pode ser alterado no
arquivo de configuração |
|
Recursos e dependências#
| Habilita ou desabilita a construção de um módulo que permite ao servidor trabalhar com
o método |
| Habilita ou desabilita a construção de um módulo que permite ao servidor trabalhar com
o método |
| Habilita o uso de pools de threads
(modo |
| Habilita o uso de I/O de arquivo assíncrono (AIO) no FreeBSD
e Linux (modo |
| Habilita o log de depuração. |
| Desabilita o cache HTTP. |
| Habilita o uso da biblioteca PCRE. O parâmetro opcional define o caminho para os fontes da biblioteca PCRE. A distribuição da biblioteca precisa ser baixada do site PCRE e extraída. O resto é feito pelos comandos ./configure e make do Angie. A biblioteca é obrigatória para suporte a expressões regulares na
diretiva |
| Define parâmetros adicionais de construção para PCRE. |
| Constrói a biblioteca PCRE com suporte à compilação JIT (a diretiva pcre_jit). |
| Desabilita o uso da biblioteca PCRE. |
| Desabilita o uso da biblioteca PCRE2 em vez da biblioteca PCRE original. |
| Habilita a construção com a biblioteca libatomic_ops. O parâmetro opcional define o caminho para os fontes da biblioteca. |
| Habilita construção estática e define o caminho para os fontes da biblioteca OpenSSL. |
| Define parâmetros adicionais de construção para OpenSSL. |
| Habilita suporte NTLS no módulo HTTP (lado servidor, lado cliente) e módulo stream (lado servidor, lado cliente) ao construir com uma biblioteca SSL que suporta NTLS. |
| Define o caminho para os fontes da biblioteca zlib. A distribuição da biblioteca (versão 1.1.3 — 1.2.11) precisa ser baixada do site zlib e extraída. O resto é feito pelos comandos ./configure e make do Angie. A biblioteca é obrigatória para o módulo GZip. |
| Define parâmetros adicionais de construção para zlib. |
| Habilita o uso de otimizações assembly para construir zlib,
otimizado para um dos seguintes processadores: |
Habilitando e Desabilitando Módulos#
Você pode desabilitar módulos que estão habilitados por padrão, ou habilitar módulos
que estão disponíveis mas desabilitados por padrão. Habilitando módulos adicionais: Habilita a construção do módulo ACME,
que habilita o protocolo ACME. Habilita a construção do módulo Addition que permite adicionar texto
antes e depois de uma resposta. Habilita a construção do módulo Auth Request que fornece
capacidade de autorização de cliente baseada no resultado de uma subrequisição. Habilita a construção do módulo DAV
destinado a automatizar tarefas de gerenciamento de arquivos no servidor via
protocolo WebDAV. Habilita a construção do módulo Degradation que permite retornar códigos de status HTTP
204 ou 444 para certos blocos Este módulo só pode ser usado em casos onde Habilita a construção do módulo FLV
que fornece suporte de pseudo-streaming do lado do servidor para arquivos
Flash Video (FLV). Habilita a construção do módulo GeoIP que cria variáveis cujos
valores são determinados baseados no endereço IP do cliente e bancos de dados
prontos da MaxMind. Habilita a construção do módulo GunZIP que permite descomprimir
respostas com Habilita a construção do módulo Gzip Static que permite servir
um arquivo pré-comprimido com o mesmo nome e a extensão Habilita a construção do módulo Image Filter que permite
transformar imagens nos formatos JPEG, GIF, PNG e WebP. Habilita a construção do módulo MP4
que fornece suporte de pseudo-streaming do lado do servidor para arquivos no formato MP4. Habilita a construção do módulo Perl. Define o diretório onde os arquivos de módulo Perl estarão localizados. Define o nome do arquivo executável Perl. Habilita a construção do módulo Random Index que atende requisições
terminadas com uma barra ( Habilita a construção do módulo RealIP que permite alterar o
endereço do cliente para aquele passado no campo de cabeçalho especificado. Habilita a construção do módulo Secure Link. Habilita a construção do módulo Slice que permite dividir uma requisição em
subrequisições, cada uma retornando um intervalo específico da resposta.
O módulo fornece cache eficiente de respostas grandes. Habilita suporte SSL para o
servidor HTTP. A biblioteca OpenSSL é obrigatória para este módulo. Habilita a construção do módulo Stub Status que fornece acesso a
informações básicas de status do servidor. Habilita a construção do módulo Sub
que permite modificar uma string especificada na resposta para outra. Habilita o módulo HTTP/2. Habilita o módulo HTTP/3. Nota Para construção, é fortemente recomendado usar uma biblioteca SSL
que suporte o protocolo QUIC: Construindo com BoringSSL: Construindo com LibreSSL: Construindo com QuicTLS: Sem isso, a biblioteca OpenSSL será usada em modo de compatibilidade, onde
o envio de early data não é
suportado e outros recursos estão ausentes, como reutilização de sessão. Tal
construção será capaz de interagir apenas com clientes e servidores
usando OpenSSL no mesmo modo. Habilita a construção do módulo XSLT que permite transformar
respostas XML usando folhas de estilo XSLT. As bibliotecas libxml2 e libxslt são obrigatórias
para este módulo. Habilita a construção do módulo Google PerfTools que fornece suporte
para criação de perfil de processos worker do Angie usando Google Performance
Tools. O módulo é destinado
aos desenvolvedores do Angie. Desabilitando módulos padrão: Desabilita o servidor HTTP. Desabilita a construção do módulo Access
que permite limitar o acesso a determinados endereços de cliente. Desabilita a construção do módulo API que
fornece uma interface HTTP RESTful para acessar informações baseadas em JSON
sobre a instância do servidor web. Desabilita a construção do módulo Auth Basic
que permite limitar o acesso a recursos validando o nome de usuário
e senha usando o protocolo HTTP Basic Authentication. Desabilita a construção do módulo AutoIndex
que processa solicitações terminadas com o caractere de barra
( Desabilita a construção do módulo Browser
que cria variáveis cujos valores dependem do valor do
campo de cabeçalho de solicitação Desabilita a construção do módulo Charset
que adiciona o charset especificado ao campo de cabeçalho de resposta
Desabilita a construção do módulo
que emite um GIF transparente de um único pixel. Desabilita a construção do módulo FastCGI
que passa solicitações para um servidor FastCGI. Desabilita a construção do módulo Geo que
cria variáveis com valores dependendo do endereço IP do cliente. Desabilita a construção do módulo que
comprime as respostas do servidor HTTP. A biblioteca zlib é obrigatória para este módulo. Desabilita a construção do módulo gRPC que
passa solicitações para um servidor gRPC. Desabilita a construção do módulo Limit Conn
que limita o número de conexões por chave, por exemplo, o
número de conexões de um único endereço IP. Desabilita a construção do módulo Limit Req
que limita a taxa de processamento de solicitações por chave, por exemplo, a
taxa de processamento de solicitações vindas de um único endereço IP. Desabilita a construção do módulo Map que
cria variáveis com valores dependendo dos valores de outras variáveis. Desabilita a construção do módulo Memcached
que obtém respostas de um servidor memcached. Desabilita a construção do módulo Mirror que
implementa o espelhamento de uma solicitação original criando
sub-solicitações de espelho em segundo plano. Desabilita a construção do módulo Prometheus
para o servidor HTTP. Desabilita a construção do módulo Proxy para o servidor HTTP. Desabilita a construção do módulo Referer
que pode bloquear o acesso a um site para solicitações com valores
inválidos no campo de cabeçalho Desabilita a construção do módulo Rewrite
que permite ao servidor HTTP redirecionar solicitações e alterar seus
URIs. A biblioteca PCRE é obrigatória para este módulo. Desabilita a construção do módulo SCGI que
passa solicitações para um servidor SCGI. Desabilita a construção do módulo Split Clients que cria
variáveis para testes A/B. Desabilita a construção do módulo SSI que
processa comandos SSI (Server Side Includes) em respostas que passam
por ele. Desabilita a construção do módulo que implementa o método de balanceamento de carga hash. Desabilita a construção do módulo que implementa o método de balanceamento de carga ip_hash. Desabilita a construção do módulo que fornece cache de conexão para servidores upstream. Desabilita a construção do módulo que implementa o método de balanceamento de carga least_conn. Desabilita a construção do módulo que implementa o método de balanceamento de carga random. Desabilita a construção do módulo que implementa persistência de sessão, garantindo que todas as solicitações na sessão do cliente sejam passadas para
o mesmo servidor no upstream. Desabilita a construção do módulo que permite armazenar o estado de tempo de execução de um upstream
em uma zona de memória compartilhada. Desabilita a construção do módulo UserID que
define cookies adequados para identificação do cliente. Desabilita a construção do módulo uWSGI que
passa solicitações para um servidor uWSGI. Habilitando módulos adicionais: Habilita a construção do módulo ACME,
que habilita o protocolo ACME. Habilita o módulo GeoIP que
cria variáveis dependendo do endereço IP do cliente e dos
bancos de dados pré-compilados MaxMind. Habilita o módulo MQTT Preread que permite
extrair IDs de cliente e nomes de usuário de pacotes Habilita o módulo RDP Preread que permite
extrair cookies de sessões RDP. Habilita o módulo RealIP que
altera o endereço do cliente para o endereço enviado no cabeçalho do protocolo
PROXY. Habilita o suporte SSL para o
servidor Stream. A biblioteca OpenSSL é obrigatória para construir e executar este módulo. Habilita o módulo SSL Preread que permite
extrair informações de mensagens ClientHello
sem terminar SSL/TLS. Desabilitando módulos padrão: Desabilita o módulo Geo que
cria variáveis com valores dependendo do endereço IP do cliente. Desabilita o módulo Limit Conn que limita o
número de conexões por chave, por exemplo, o número de conexões
de um único endereço IP. Desabilita o módulo Map que
cria variáveis com valores dependendo de valores de outras variáveis. Desabilita o módulo Return
que envia o valor especificado para o cliente e então fecha a
conexão. Desabilita o módulo Set que
define um valor para uma variável. Desabilita o módulo Split Clients que cria
variáveis para testes A/B. Desabilita o módulo que implementa o método de balanceamento de carga hash. Desabilita o módulo que implementa o método de balanceamento de carga least_conn. Desabilita o módulo que implementa o método de balanceamento de carga random. Desabilita o módulo que permite armazenar o estado de tempo de execução de um
upstream em uma zona de memória compartilhada. Habilitando módulos adicionais: Habilita o suporte SSL para
o servidor Mail. A biblioteca OpenSSL é obrigatória para construir e executar este módulo. Desabilitando módulos padrão: Habilita a construção de um módulo externo no caminho especificado. Habilita a construção de um módulo dinâmico externo no caminho especificado. Habilita o modo de compatibilidade de módulo dinâmico. Quando habilitado, o Angie pode carregar e
usar módulos dinâmicos que foram construídos para a mesma versão do Angie,
mesmo se esses módulos foram construídos com opções diferentes. Define o compilador a ser usado durante a construção. Define o pré-processador a ser usado durante a construção. Define parâmetros adicionais que serão adicionados à variável Define parâmetros adicionais que serão usados durante a vinculação. Ao usar
a biblioteca PCRE do sistema no FreeBSD, Habilita construções otimizadas para um dos seguintes processadores:
HTTP#
--with-http_acme_module--with-http_addition_module--with-http_auth_request_module--with-http_dav_module--with-http_degradation_modulelocation.sbrk(0)
mostra a quantidade real de memória alocada para o processo. Em outras
palavras, o módulo funciona no FreeBSD até a versão 7.0 por padrão. A partir
da versão 7.0, funciona apenas se MALLOC_OPTIONS=Dm estiver definido. No
Linux não funciona.--with-http_flv_module--with-http_geoip_module, --with-http_geoip_module=dynamic--with-http_gunzip_moduleContent-Encoding: gzip para clientes que não
suportam o método de compressão gzip.--with-http_gzip_static_module.gz
em vez de um arquivo regular.--with-http_image_filter_module,
--with-http_image_filter_module=dynamic--with-http_mp4_module--with-http_perl_module, --with-http_perl_module=dynamic--with-perl_modules_path=path--with-perl=path--with-http_random_index_module/) e retorna um arquivo aleatório como
arquivo de índice do diretório.--with-http_realip_module--with-http_secure_link_module--with-http_slice_module--with-http_ssl_module--with-http_stub_status_module--with-http_sub_module--with-http_v2_module--with-http_v3_module$ ./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../boringssl/include"
--with-ld-opt="-L../boringssl/build/ssl
-L../boringssl/build/crypto"
$ ./configure
--with-debug --with-http_v3_module
--with-cc-opt="-I../libressl/build/include"
--with-ld-opt="-L../libressl/build/lib"
$ ./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../quictls/build/include"
--with-ld-opt="-L../quictls/build/lib"
--with-http_xslt_module, --with-http_xslt_module=dynamic--with-google_perftools_module--without-http--without-http_access_module--without-http_api_module--without-http_auth_basic_module--without-http_autoindex_module/) e produz uma listagem de diretório caso o módulo Index não consiga encontrar um arquivo de índice.--without-http_browser_moduleUser-Agent.--without-http_charset_moduleContent-Type e pode adicionalmente converter dados de um charset
para outro.--without-http_empty_gif_module--without-http_fastcgi_module--without-http_geo_module--without-http_gzip_module--without-http_grpc_module--without-http_limit_conn_module--without-http_limit_req_module--without-http_map_module--without-http_memcached_module--without-http_mirror_module--without-http_prometheus_module--without-http_proxy_module--without-http_referer_moduleReferer.--without-http_rewrite_module--without-http_scgi_module--without-http_split_clients_module--without-http_ssi_module--without-http_upstream_hash_module--without-http_upstream_ip_hash_module--without-http_upstream_keepalive_module--without-http_upstream_least_conn_module--without-http_upstream_random_module--without-http_upstream_sticky_module--without-http_upstream_zone_module--without-http_userid_module--without-http_uwsgi_moduleMódulos Stream#
--with-stream, --with-stream=dynamic
- Habilita o módulo principal Stream
para proxy TCP/UDP genérico e balanceamento de carga.#--with-stream_acme_module--with-stream_geoip_module, --with-stream_geoip_module=dynamic--with-stream_mqtt_preread_moduleCONNECT nas versões MQTT
3.1.1
e 5.0.--with-stream_rdp_preread_module--with-stream_realip_module--with-stream_ssl_module--with-stream_ssl_preread_module--without-stream_access_module
- Desabilita o módulo Access
que permite limitar o acesso a determinados endereços de cliente.#--without-stream_geo_module--without-stream_limit_conn_module--without-stream_map_module--without-stream_return_module--without-stream_set_module--without-stream_split_clients_module--without-stream_upstream_hash_module--without-stream_upstream_least_conn_module--without-stream_upstream_random_module--without-stream_upstream_zone_moduleMail#
--with-mail, --with-mail=dynamic
- Habilita o módulo principal Mail que
suporta POP3, IMAP4 e SMTP.#--with-mail_ssl_moduleOutras opções#
--with-cpp_test_module
- Habilita o módulo CPP Test. É usado principalmente para desenvolvimento
e propósitos de teste e não é destinado para uso em produção.#--add-module=path--add-dynamic-module=path--with-compat--with-cc=path--with-cpp=path--with-cc-opt=parametersCFLAGS.
Ao usar a biblioteca PCRE do sistema no FreeBSD,
--with-cc-opt="-I /usr/local/include" deve ser especificado. Se o
número de arquivos suportados por select() precisa ser aumentado, também
pode ser especificado aqui, como --with-cc-opt="-D
FD_SETSIZE=2048".--with-ld-opt=parameters--with-ld-opt="-L
/usr/local/lib" deve ser especificado.--with-cpu-opt=cpupentium, pentiumpro, pentium3, pentium4,
athlon, opteron, sparc32, sparc64,
ppc64.
Exemplos#
Construção Simples com HTTPS Habilitado. Esta configuração básica habilita o suporte HTTPS usando SSL/TLS, com as dependências necessárias (PCRE para expressões regulares, zlib para compressão e OpenSSL para SSL/TLS):
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-http_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-zlib=../zlib-1.3 \
--with-openssl=../openssl-3.0.8
Construção Otimizada para Performance. Esta configuração é otimizada para performance, incluindo suporte HTTP/2, compressão estática gzip, JIT para PCRE e I/O assíncrono; pools de threads também são habilitados para manuseio eficiente de altas cargas:
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-pcre=../pcre2-10.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.3 \
--with-threads \
--with-file-aio
Balanceador de Carga com Proxy TCP/UDP. Esta configuração configura um balanceador de carga para serviços HTTP e não-HTTP:
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-stream \
--with-stream_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-zlib=../zlib-1.3
Construção Especializada. Esta configuração inclui HTTPS, HTTP/2, compressão, segurança e performance aprimoradas, juntamente com módulos adicionais para compressão Brotli e gerenciamento de cache, otimizado tanto para proxy HTTP quanto TCP/UDP:
$ ./configure \
--prefix=/usr/local/angie \ # Diretório de instalação do Angie
--sbin-path=/usr/sbin/angie \ # Caminho para o binário do Angie
--conf-path=/etc/angie/angie.conf \ # Caminho para o arquivo de configuração principal
--pid-path=/run/angie.pid \ # Caminho para o arquivo PID
--lock-path=/var/lock/angie.lock \ # Caminho para o arquivo de bloqueio
--error-log-path=/var/log/angie/error.log \ # Caminho para o arquivo de log de erros
--http-log-path=/var/log/angie/access.log \ # Caminho para o arquivo de log de acesso
--with-http_ssl_module \ # Habilita o módulo SSL para HTTPS
--with-http_v2_module \ # Habilita suporte HTTP/2 para melhor desempenho
--with-http_realip_module \ # Permite que o Angie trate corretamente os cabeçalhos X-Real-IP e X-Forwarded-For
--with-http_gzip_static_module \ # Serve arquivos .gz pré-comprimidos para reduzir carga da CPU
--with-http_stub_status_module \ # Fornece uma página de status
--with-threads \ # Habilita pools de threads para melhorar desempenho sob carga pesada
--with-file-aio \ # Habilita I/O assíncrono
--with-stream \ # Habilita funcionalidade de proxy TCP/UDP
--with-stream_ssl_module \ # Adiciona suporte SSL/TLS para proxy TCP/UDP
--with-pcre=../pcre2-10.40 \ # Especifica o caminho para a biblioteca PCRE para suporte a regex
--with-pcre-jit \ # Habilita compilação just-in-time para PCRE
--with-zlib=../zlib-1.3 \ # Especifica o caminho para a biblioteca zlib para compressão
--with-openssl=../openssl-3.0.8 \ # Especifica o caminho para a biblioteca OpenSSL para SSL/TLS
--with-openssl-opt="enable-ec_nistp_64_gcc_128" \ # Otimiza OpenSSL para curvas NIST de 64 bits
--add-module=../ngx_brotli \ # Adiciona módulo de terceiros ngx_brotli para suporte à compressão Brotli
--add-dynamic-module=../ngx_cache_purge # Adiciona módulo de terceiros ngx_cache_purge para gerenciamento de cache